gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 20:25:05 25 4
gpt4 key购买 nike

我的示例枚举单例类是:

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。

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

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

最佳答案

这是因为INSTANCE是在name之前声明的,所以它是在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);
}

关于java - 如何在 Java Singleton 枚举构造函数中调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53312274/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com