JAVA_静态泛型方法及静态泛型成员变量

博客介绍了Java泛型类中静态方法和静态变量的使用规则。泛型类的静态方法不能使用类的泛型,应定义为泛型方法,因为静态方法加载先于类实例化,泛型类型参数未传递时静态方法已加载。同时,不能定义静态泛型变量,因为静态变量运行时载入内存,此时类型无法确定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#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程序一运行时就已经被载入内存,而此时它的类型无法确定,而开辟空间必须知道类型,两者矛盾。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值