Java中的单例类问题

时间:2015-12-23 18:35:44

标签: java class singleton declaration

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();

单例类应该是一个只能启动一次的类,但如果我们在上面声明多个实例,编译器不会抛出错误,为什么?

1 个答案:

答案 0 :(得分:0)

单例类应该是一个只能由其他类实例化一次的类。这通常通过私有构造函数实现。但是,私有构造函数无法阻止类中的实例化。

你应该阅读这个问题:What is an efficient way to implement a singleton pattern in Java?

如果你遵循Joshua Bloch的想法并使用枚举来实现你的单身人士,那么你甚至无法在课堂上打破单身合同。