繁体   English   中英

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

How to call methods within Java Singleton enum constructor?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我的示例枚举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()中,if

MyClass m1 = MyClass.INSTANCE;

被替换为

MyClass.INSTANCE.test();

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

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

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

1 个回复

这是因为在name之前声明了INSTANCE ,因此在初始化name之前创建它并初始化。

这有效:

public enum MyClass{
    INSTANCE;
    private static final String name = "Hello";

    MyClass() {
        test();
    }

    private static void test(){
        String name1 = name + "World";
        System.out.println(name1);
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题
 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM