【发布时间】:2012-08-31 22:46:51
【问题描述】:
public class Main {
public static void main(String[] args){
System.out.println(X.Y.Z);
}
}
class X {
static class Y {
static String Z = "Result 1";
}
static C Y = new C();
}
class C {
String Z = "Result 2";
}
有时输出为"Result 1",有时输出为"Result 2"。你能解释一下原因吗?
我正在使用JDK 1.6_33。
【问题讨论】:
-
使用 JDK 1.6.24,我每次都得到
Result 2。 -
@mellamokb 我也是。每一次。
-
我下载了JDK 1.6.33,编译运行代码sn -p 20次。每次都收到
Result 2。 -
这个结果很奇怪,因为即使你的 jdk 有问题,一旦编译,代码应该只产生一种类型的结果:编译器要么放入字段访问,要么放入内部类访问,这应该就这样吧。
-
现在我无法重现结果 1... 可能是我的错误。哦,我的视力不好
标签: java