Java中不同类型的泛型类的静态成员是否不同?

时间:2010-08-10 01:36:49

标签: java generics static

@Spence问了这个Previous Question

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

2 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:4)

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

来自generics tutorial,第14页:

  

结果,静态变量   和类的方法也是共享的   在所有情况中。这就是为什么   引用该类型是非法的   一个类型声明的参数   静态方法或初始化程序,或在   a的声明或初始化程序   静态变量。