【发布时间】:2017-08-10 03:52:33
【问题描述】:
我知道我不能在泛型类的任何静态上下文中使用类型参数,因为“静态上下文依赖于类型参数,并且对于泛型类型的所有实例化只有一次。”
public final class X<T>{
private static T field; // error
public static T getField(){return field; } // error
}
但我不明白为什么允许在静态泛型方法中使用形式类型参数。
public final class X{
public static <T> T getField(T t){ return t;} // Ok
}
静态泛型方法中泛型类型参数和形式类型参数有什么区别? 你能用例子解释一下吗? 非常感谢。
【问题讨论】:
-
正式类型参数是泛型类型参数。我不明白你在问什么。
-
请你用例子解释一下这个[问题]
-
一个方法每次使用都会得到不同的类型参数;方法的一次调用与同一方法的另一次调用之间没有关系。对于字段,没有一个
T可以使用;对于方法,T在方法调用处分配,在每个使用方法的地方分配一个不同的T。