泛型类共享静态成员吗​​?

Qui*_*rin 6 java generics static

我想问一下泛型类.当我从泛型类创建两个对象实例时会发生什么.他们是否共享每个静态成员,或者两者都拥有自己的静态成员?

例如:

public A<?>(){
    public static Integer member = 0;
}

A<Integer> integer = new A<Integer>();
A<String> string = new A<String>();
Run Code Online (Sandbox Code Playgroud)

两者都有Integer并且String背后有相同的参考member

Pet*_*nis 11

public class A<T>{
    public static Integer member = 0;

    public static void main(String[] args)
    {
      A<Integer> integer = new A<Integer>();
      A<String> string = new A<String>();

      integer.member++;
      System.out.println(string.member);
    }
}
Run Code Online (Sandbox Code Playgroud)

产量

1
Run Code Online (Sandbox Code Playgroud)

所以,是的,这两个实例共享相同的member变量.

  • +1这个问题很好的例子.另外值得注意的是,"integer.member ++;"是一种糟糕的风格,而stylecheckers则不鼓励这样的代码.应始终以静态方式访问`static`成员,即:`A.member ++;`. (2认同)