反编译探究枚举实现单例原理

兄弟萌,相信大家已经掌握了单例模式的多种实现方式,如:饿汉式、懒汉式、双重检测锁、静态内部类、枚举。前面几种相信大家看到代码很容易能够理解,但看到枚举方式时,相信大家会跟我有一种心情:WTF?这特么是怎么实现单例的?

废话少说,先看枚举方式是怎样的。
在这里插入图片描述
看到这里,先不谈它的底层实现原理,甚至可能还有很多人还不知道它怎么拿到这个单例对象,接着看。
在这里插入图片描述
我们反编译来研究一下这到底是怎么实现的?

  1. javap EnumSingleton.java
  2. javap -c EnumSingleton.class
    在这里插入图片描述

为了追求简单,我们直接看红框部分,大家可以看明白了吧,其实枚举方式底层就是懒汉式写法

总之,枚举类实现单例模式是极力推荐的单例实现模式,因为枚举类型是线程安全的,并且只会装载一次,而且枚举类型是所用单例实现中唯一一种不会被破坏的单例实现模式。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值