【发布时间】:2020-06-23 14:51:09
【问题描述】:
类 Singleton 的实例将在方法 getInstance() 被调用时被实例化。我想知道为什么我可以从静态内部类中实例化外部类?
public class Singleton{
private Singleton(){}
private static class SingletonHolder{
private static Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance(){
return SingletonHolder.INSTANCE;
}
}
【问题讨论】:
-
因为
private只表示在这个类中,而内层在外层。 -
(在这个 outer 类中。有一些奇怪的边缘情况,但如果你正在做一些肮脏的事情,它们就是边缘情况。我忘记了它们是什么。)另外,我可以制作那个“单例”(一种反模式)的实例。单持有者反模式几乎总是适得其反——类是延迟加载的,你只是增加了更多的工作和更多的混乱。而且,最重要的是,对全局状态说不。
标签: java