Java Singleton模式

Spe*_*cer 17 java singleton design-patterns initialization

编辑:已回答 - 错误是方法不是静态的

我使用的是Singleton设计模式

 public class Singleton {
   private static final Singleton INSTANCE = new Singleton();

   // Private constructor prevents instantiation from other classes
   private Singleton() {}

   public static Singleton getInstance() {
      return INSTANCE;
   }
 }
Run Code Online (Sandbox Code Playgroud)

我的问题是如何在另一个类中创建类Singleton的对象?

我试过了:

Singleton singleton = new Singleton(); 
// error - constructor is private
Singleton singleton = Singleton.getInstance();
// error - non-static method cannot be referenced from a static context
Run Code Online (Sandbox Code Playgroud)

什么是正确的代码?

谢谢,斯宾塞

Boz*_*zho 26

Singleton singleton = Singleton.getInstance();
Run Code Online (Sandbox Code Playgroud)

是正确的方法.确保你的getInstance()方法确实如此static.

由于您的Singleton实现远非安全 - 您的对象可以通过反射实例化,您可能希望基于创建单例enum

  • @Bart van Heukelom理论上我完全赞同你.但实际上,这通常不是真的:) (2认同)