【发布时间】:2013-03-01 11:39:17
【问题描述】:
例如,我的课程 Singleton 带有静态字段 instance:
public class Singleton {
private static Singleton instance;
// other code, construct, getters, no matter
}
我可以用两个不同的类加载器加载这个类两次。我怎么能避免呢?这是不安全和危险的。
另外,如果我将 instance 设置为 null,它会为两个类都设置为 null 吗?
Singleton singleton = Singleton.getInstance();
singleton = null;
【问题讨论】:
-
如果你真的想实现单例设计模式,那么请遵循 Java 中的enum type——“单元素枚举类型是实现单例的最佳方式”
-
枚举模式不会阻止每个类加载器存在一个实例,对吗?
-
不幸的是,枚举可能来自不同的类加载器,您可以想象这会导致各种问题。
标签: java singleton classloader