我已经读过可以Singleton使用以下方法在Java中实现Enum:
public enum MySingleton {
INSTANCE;
}
Run Code Online (Sandbox Code Playgroud)
但是,上面的工作如何?具体而言,Object必须实例化.在这里,如何MySingleton被实例化?谁在做什么new MySingleton()?
当我运行这段代码时答案是1,我认为它将是2.初始化的顺序和每一步中k的值是多少?
public class Test {
static {k = 2;}
static int k = 1;
public static void main(String[] args) {
System.out.println(k);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑1:作为"k设置为默认值"的后续内容,为什么下一个代码不能编译?这是一个错误"无法在定义之前引用字段".
public class Test {
static {System.out.println(k);}
static int k=1;
public static void main(String[] args) {
System.out.println(k);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑2:对于一些我不知道的原因,当^而不是"k"它的"Test.k"时它起作用.
感谢所有的答案.这将是完美的:D