如何在Java单例枚举构造函数中调用方法?
我的示例enum Singleton类是:
public class Test{
public enum MyClass{
INSTANCE;
private static String name = "Hello";
MyClass() {
test();
}
private static void test(){
name = name + "World";
System.out.println(name);
}
}
public static void main(String a[]){
MyClass m1 = MyClass.INSTANCE;
}
}
获得的输出:nullWorld
预期输出:HelloWorld
在main()中,如果
MyClass m1 = MyClass.INSTANCE;
被替换为
MyClass.INSTANCE.test();
然后,正如预期的那样,输出是HelloWorld
这表明,在构造函数完成执行之前,静态字段不会初始化
问题:如何实现在访问静态字段的构造函数中调用方法的功能
# 1 楼答案
这是因为
INSTANCE
是在name
之前声明的,所以它是在name
初始化之前创建和初始化的这是有效的: