泛型类中的静态方法不能使用类的泛型,而应该将该方法定义为泛型方法
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中泛型只是一个占位符,必须在传递类型后才能使用。就泛型类而言,类实例化时才能传递真正的类型参数,由于静态方法的加载先于类的实例化,也就是说类中的泛型还没有传递真正的类型参数时,静态方法就已经加载完成。显然,静态方法不能使用/访问泛型类中的泛型。
这和静态方法不能调用普通方法/访问普通变量类似,都是因为静态申明与非静态申明的生命周期的不同。