最好的单例模式-枚举

前两天作者写了一篇关于单例模式的文章,其中枚举写法没有写全,今天单独写一写使用枚举如何去写单例。枚举这种写法可以防止反射、序列化造成多例的情况。开始

/**

* 枚举enum和静态代码块的特性相似,在使用枚举类时,构造方法会被自动调用,程序中调用两次枚举,构造方法调用一次

* Resource r1 = EnumSingleton.INSTANCE.getInstance();

* Resource r2 = EnumSingleton.INSTANCE.getInstance();

* System.out.println(r1 == r2);

* construct enum singleton

* true

* 因为枚举变量是static final的,所以如果不是定义时声明,那只能在构造方法中实例化,并且有且只能实例化一次。所以保证了resource对象的单例性。

* 反编译后就会发现,使用枚举其实和使用静态类内部加载方法原理类似。枚举会被编译成如下形式:

* public final class T extends Enum{

* ...

* }

* 代码简单

* 自由序列化

* 线程安全

* @author YF

*

*/枚举

对象

运行结果

最后

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();