我希望有一个具有多个静态变量的类,这些变量只能按需初始化。
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执行此操作,但如果您有很多字段,这很麻烦。
还有其他办法吗?
答案 0 :(得分:2)
延迟初始化的最常用方法是在getter方法中初始化:
public class Messages {
private static String message1;
public static String getMessage1() {
if (message1 == null)
message1 = init1();
return message1;
}
}
如果您想要完全public final static
个字段,那么就无法在Java中为它们实现单独的初始化。所有班级成员一起初始化。