public class InstanceBuilder {
private static final InstanceBuilder INSTANCE = new InstanceBuilder();
private static String name = null;
private InstanceBuilder() {
System.out.println("Setting cons()");
name = "Testing";
}
public static String getName() {
return name;
}
}
public class Driver {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("value is " + InstanceBuilder.getName());
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
Setting cons()
value is null
Run Code Online (Sandbox Code Playgroud)
为什么它打印值,null即使我static在构造函数中设置了变量并按预期调用它.如果我尝试在构造函数中打印,它是打印Testing,但如果我从public static方法调用,它是null.我知道如果我改变它INSTANCE.name,它的工作原理.但我想理解为什么如果我直接访问static变量它不起作用,因为应该共享相同的副本.我在这里缺少什么?
java ×1