#1.泛型类中的静态方法不能使用类的泛型,而应该将该方法定义为泛型方法
1.错误示范:
class demo<T>{
public static T show(T temp) {
return temp;
}
}
2.正确示范:
class demo<T>{
public static <T> T show(T temp) {
return temp;
}
}
3.原因:
在java中泛型只是一个占位符,必须在传递类型后才能使用。就泛型类而言,类实例化时才能传递真正的类型参数,由于静态方法的加载先于类的实例化,也就是说类中的泛型还没有传递真正的类型参数时,静态方法就已经加载完成。显然,静态方法不能使用/访问泛型类中的泛型。
这和静态方法不能调用普通方法/访问普通变量类似,都是因为静态申明与非静态申明的生命周期不同。
#2.不能定义静态泛型变量
1.原因:
由于静态变量在java程序一运行时就已经被载入内存,而此时它的类型无法确定,而开辟空间必须知道类型,两者矛盾。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。