You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
public class StaticTest{
public static void main(String[] args){
GT gti = new GT();
gti.var=1;
GT gts = new GT();
gts.var=2;
System.out.println(gti.var);
}
}
class GT{
public static int var=0;
public void nothing(T x){}
}
以上代码输出结果为:2!
由于经过类型擦除,所有的泛型类实例都关联到同一份字节码上,泛型类的所有静态变量是共享的。`
静态变量,本身不就是全局唯一的吗,即使你通过对象访问,本质访问的还是静态变量,这与是否使用泛型没有关系啊。
为了证明这个观点,我去除了泛型,重新执行代码,依然打印2.这是因为: GT<Integer> gti = new GT<Integer>(); gti.var=1; GT<String> gts = new GT<String>(); gts.var=2;
修改的是同一个变量。
示例如下:
`
public static void main(String[] args) throws Throwable {
GT gti = new GT();
gti.var=1;
GT gts = new GT();
gts.var=2;
System.out.println(gti.var);
}
class GT{
public static int var=0;
public void nothing(int x){}
}
`
The text was updated successfully, but these errors were encountered:
public class StaticTest{ public static void main(String[] args){ GT gti = new GT(); gti.var=1; GT gts = new GT(); gts.var=2; System.out.println(gti.var); } } class GT{ public static int var=0; public void nothing(T x){} } 以上代码输出结果为:2!
由于经过类型擦除,所有的泛型类实例都关联到同一份字节码上,泛型类的所有静态变量是共享的。`
静态变量,本身不就是全局唯一的吗,即使你通过对象访问,本质访问的还是静态变量,这与是否使用泛型没有关系啊。 为了证明这个观点,我去除了泛型,重新执行代码,依然打印2.这是因为: GT<Integer> gti = new GT<Integer>(); gti.var=1; GT<String> gts = new GT<String>(); gts.var=2; 修改的是同一个变量。
示例如下: ` public static void main(String[] args) throws Throwable {
GT gti = new GT();
gti.var=1;
GT gts = new GT();
gts.var=2;
System.out.println(gti.var);
}
class GT{ public static int var=0; public void nothing(int x){} }
当泛型内包含静态变量
原文是:
`当泛型内包含静态变量
public class StaticTest{
public static void main(String[] args){
GT gti = new GT();
gti.var=1;
GT gts = new GT();
gts.var=2;
System.out.println(gti.var);
}
}
class GT{
public static int var=0;
public void nothing(T x){}
}
以上代码输出结果为:2!
由于经过类型擦除,所有的泛型类实例都关联到同一份字节码上,泛型类的所有静态变量是共享的。`
静态变量,本身不就是全局唯一的吗,即使你通过对象访问,本质访问的还是静态变量,这与是否使用泛型没有关系啊。
为了证明这个观点,我去除了泛型,重新执行代码,依然打印2.这是因为:
GT<Integer> gti = new GT<Integer>(); gti.var=1; GT<String> gts = new GT<String>(); gts.var=2;
修改的是同一个变量。
示例如下:
`
public static void main(String[] args) throws Throwable {
class GT{
public static int var=0;
public void nothing(int x){}
}
`
The text was updated successfully, but these errors were encountered: