我想要一个包含多个静态变量的类,这些变量仅根据需要进行初始化。
public class Messages {
public static final String message1 = init1();
public static final String message2 = init2();
}
因此,当我在代码中的某个位置引用 Messages.message1
时,我只想调用 init1()
。如果稍后我访问 Messages.message2
,那么只有在那时才应该调用 init2()
。
我知道可以使用Initialization-on-demand holder idiom来做到这一点,但是如果您有很多字段,这会很麻烦。
还有别的办法吗?
最佳答案
延迟初始化最常见的方式是在 getter 方法中初始化:
public class Messages {
private static String message1;
public static String getMessage1() {
if (message1 == null)
message1 = init1();
return message1;
}
}
如果您想要的是 public final static
字段,那么在 Java 中无法实现它们的单独初始化。所有类成员都一起初始化。
关于java - 在没有静态嵌套类的情况下按需初始化多个静态变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26574778/