我想有一个带有多个静态变量的类,这些类只能按需初始化。
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中对其进行单独的初始化。所有类成员都一起初始化。