public class Singleton {
private static class SingletonHolder {
private static final Singleton INSTANCE = new Singleton();
}
private Singleton() {
}
public static Singleton getInstance() {
return SingletonHolder.INSTANCE;
}
public static void main(String args[]) {
Singleton s = new Singleton();
Singleton s2 = new Singleton();
}
}
基于" Effective Java",单例类就像上面那样。
假设我们在这个类中有一个main。我们可以根据需要多次启动单身人士课程,例如
Singleton s1=new Singleton();
Singleton s2=new Singleton();
Singleton s3=singleton.getInstance();
Singleton s4=singleton.getInstance();
单例类应该是一个只能启动一次的类,但如果我们在上面声明多个实例,编译器不会抛出错误,为什么?
答案 0 :(得分:0)
单例类应该是一个只能由其他类实例化一次的类。这通常通过私有构造函数实现。但是,私有构造函数无法阻止类中的实例化。
你应该阅读这个问题:What is an efficient way to implement a singleton pattern in Java?
如果你遵循Joshua Bloch的想法并使用枚举来实现你的单身人士,那么你甚至无法在课堂上打破单身合同。