JAVA_静态泛型方法

泛型类中的静态方法不能使用类的泛型,而应该将该方法定义为泛型方法

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中泛型只是一个占位符,必须在传递类型后才能使用。就泛型类而言,类实例化时才能传递真正的类型参数,由于静态方法的加载先于类的实例化,也就是说类中的泛型还没有传递真正的类型参数时,静态方法就已经加载完成。显然,静态方法不能使用/访问泛型类中的泛型。

这和静态方法不能调用普通方法/访问普通变量类似,都是因为静态申明与非静态申明的生命周期的不同。

猜你喜欢

转载自blog.csdn.net/SWEENEY_HE/article/details/88615836