Java 枚举版的singleton:如何实现及其优势?

Java 枚举版的singleton:如何实现及其优势?,java,enums,singleton,Java,Enums,Singleton,上面的类是我目前实现的传统单例使用。如何在此类上实现singleton的枚举版本?与传统相比,它有什么好处 即,这是如何工作的: Public class Singleton{ //private static ref private Static Singleton uniqueInstance; //private constructor private Singleto

上面的类是我目前实现的传统单例使用。如何在此类上实现singleton的枚举版本?与传统相比,它有什么好处

即,这是如何工作的:

    Public class Singleton{

             //private static ref
             private Static Singleton uniqueInstance; 

              //private constructor
              private Singleton(){
              }

             public static Singleton getInstance{

             if(uniqueInstance==null){

            uniqueInstance= new Singleton();
             }

           return uniqueInstance;

           }

}

正如Joshua Bloch所说,使用enum创建sigleton可以保证类是单例的。即使使用反射,也无法创建多个实例。但是有些人不喜欢用这种方式实现西格尔顿。这是一个争论的话题

顺便说一下,您拥有的代码段不是线程安全的。多个线程可以同时进入getInstance方法,您的sigleton模式将中断。如果你需要更多的解释,请在评论中告诉我


它用代码解释了如果sigleton模式没有作为enum实现,它是如何破坏的。

花点时间看看这个问题以前是否被问过;您将节省您自己和我们的时间。您的解决方案不是线程安全的,当您有多个线程时,不能保证是单线程的。
public enum Foo {
   INSTANCE;
}