【问题标题】:Are static members of a generic class different for different types in Java?Java中不同类型的泛型类的静态成员是否不同?
【发布时间】:2011-03-27 14:28:06
【问题描述】:

@Spence 问了这个Previous Question

那么,这在 Java 中是如何工作的? Java在运行时会丢弃泛型类型,那么用不同泛型类型实例化的类的静态变量会发生什么?

【问题讨论】:

    标签: java generics static


    【解决方案1】:

    Java 中的静态成员不能具有来自包含它们的类的泛型类型参数。

    public class Gen<T> {
      public static T foo; // compiler error
    }
    

    【讨论】:

      【解决方案2】:

      静态变量在该类型的所有实例之间共享,即使是不同类型参数的实例。

      来自generics tutorial,第 14 页:

      因此,静态变量 和类的方法也是共享的 在所有实例中。因此 引用类型是非法的 a 中类型声明的参数 静态方法或初始化程序,或在 a 的声明或初始化器 静态变量。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-03-30
        • 2021-06-28
        • 1970-01-01
        • 2012-11-15
        • 2018-09-26
        • 1970-01-01
        • 2011-03-03
        相关资源
        最近更新 更多