Мой пример перечисления 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, как и ожидалось.
Это показывает, что статические поля не инициализируются, пока конструктор не завершит выполнение.
Вопрос: Как добиться этой функциональности вызова метода внутри конструктора, который обращается к статическим полям?