【发布时间】:2013-06-05 21:04:51
【问题描述】:
我想问一下泛型类。当我从一个泛型类创建两个对象实例时会发生什么。他们共享每个静态成员,还是都有自己的静态成员?
例如:
public A<?>(){
public static Integer member = 0;
}
A<Integer> integer = new A<Integer>();
A<String> string = new A<String>();
Integer 和 String 在 member 后面有相同的引用吗?
【问题讨论】:
-
您的问题是有效的,但您发布的代码很糟糕:它既不是有效的构造函数,也不是类声明。您的问题的答案是:是的,它们共享每个静态成员。另外,您可以自己回答问题:
System.out.println(integer.member == string.member);与System.out.println(A.member == A.member);相同,因为是static) -
测试不难...
-
如果成员本身是通用的会发生什么?喜欢
public class MyClass<T> { public static T member; }?? -
@RaviThapliyal:不会编译。
-
当您懒得尝试代码时会发生这种情况...