这是网络上最常见的实现方式
private static class LazySomethingHolder {
public static Something something = new Something();
}
public static Something getInstance() {
return LazySomethingHolder.something;
}
以下更简单的变体是否正确,如果不正确,它有什么问题?该问题是 Java 特有的还是 C++ 中也存在?
public static Something getInstance() {
private static Something something = new Something();
return something;
}
最佳答案
Java 中不能有静态局部变量。
更简单的选择是
private static final Something something = new Something();
public static Something getInstance() {
return something;
}
或者我的偏好。
enum Something {
INSTANCE;
}
这些模式的唯一问题是,如果您有多个要延迟加载的实例,则每个实例都需要有一个类,否则加载一个就意味着加载所有实例。
关于java - Initialization On Demand Holder 成语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35551393/