小编Aad*_*i R的帖子

如何在Java Singleton枚举构造函数中调用方法?

我的示例枚举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; 

    }
}
Run Code Online (Sandbox Code Playgroud)

获得的输出:nullWorld
预期输出:HelloWorld

在main()中,if

MyClass m1 = MyClass.INSTANCE;
Run Code Online (Sandbox Code Playgroud)

被替换为

MyClass.INSTANCE.test();
Run Code Online (Sandbox Code Playgroud)

然后,输出是HelloWorld,正如预期的那样.

这表明在构造函数完成执行之前,不会初始化静态字段.

问题:如何实现在访问静态字段的构造函数中调用方法的这种功能?

java singleton enums constructor

5
推荐指数
1
解决办法
89
查看次数

标签 统计

constructor ×1

enums ×1

java ×1

singleton ×1