我很困惑。我在Java中找到了许多单例设计模式的实现。其中之一是以下内容:
public class MySingleton {
private static class Loader {
static MySingleton INSTANCE = new MySingleton();
}
private MySingleton () {}
public static MySingleton getInstance() {
return Loader.INSTANCE;
}
}
如此解释:https://stackoverflow.com。 现在,如果这个实现应该有效,为什么下面的代码却无法正常工作?
public class MySingleton {
private static final MySingleton INSTANCE = new MySingleton();
private MySingleton () {}
public static MySingleton getInstance() {
return INSTANCE;
}
}
我搜索了Java如何处理初始化的相关内容,但没有找到任何显示后面的代码不起作用的信息。 相反,我发现了以下内容:stackoverflow.com,它指出每个静态初始化在调用类的静态方法之前发生,因此在调用访问INSTANCE(getInstance)的唯一方法时应初始化保存单例实例的静态字段。 所以,如果这段代码有效,为什么不使用这种更简单的单例设计模式呢?