为什么要用枚举实现Singleton

为什么要用枚举实现Singleton


白板的微信
浏览 571回答 2
2回答

ibeautiful

package singleton;import java.lang.reflect.Constructor;import java.lang.reflect.InvocationTargetException;//AprilCal on 2016.4.23class Singleton//最普通的一种Singleton实现{private static Singleton INSTANCE=new Singleton();private Singleton(){System.out.println("私有构造函数被调用");}public static Singleton getInstance(){return INSTANCE;}}enum EnumSingleton2//枚举实现的Singleton{INSTANCE;private EnumSingleton2(){System.out.println("enum 私有构造函数被调用");}}public class SingletonTest{public static void main(String[] args)throws ClassNotFoundException, IllegalAccessException,IllegalArgumentException, InvocationTargetException,NoSuchMethodException, SecurityException, InstantiationException{Class <?> cls1 = Class.forName("singleton.Singleton");Class <?> cls2 = Class.forName("singleton.EnumSingleton2");//通过反射调用Singleton的构造函数Constructor <?> c0=cls1.getDeclaredConstructor();c0.setAccessible(true);Singleton s=(Singleton)c0.newInstance();//通过反射调用EnumSingleton的构造函数Constructor <?> c1=cls2.getDeclaredConstructor();c1.setAccessible(true);EnumSingleton es=(EnumSingleton)c1.newInstance();}}

慕尼黑的夜晚无繁华

单例模式实现方式有很多:在第一次使用的时候创建(构造函数中判断是否已经有实例存在),在类加载的时候用静态块儿创建(静态块初始化),在应用启动的时候创建。 在单线程中,基本大同小异,保证类的实例在整个应用中只有一个,都是没问题的。
打开App,查看更多内容
随时随地看视频慕课网APP