奇怪的 Java 行为,带有静态和最终限定符
在我们的团队中,我们发现了一些奇怪的行为,我们同时使用了限定符和限定符。这是我们的测试类:static
final
public class Test {
public static final Test me = new Test();
public static final Integer I = 4;
public static final String S = "abc";
public Test() {
System.out.println(I);
System.out.println(S);
}
public static Test getInstance() { return me; }
public static void main(String[] args) {
Test.getInstance();
}
}
当我们运行该方法时,我们得到的结果如下:main
null
abc
如果它两次都写入值,我会理解,因为静态类成员的代码是从上到下执行的。null
谁能解释为什么会发生这种行为?