为什么枚举式天然的单例

首先先来回顾一下单例的定义,在某个特定环境下的,针对某个对象只有唯一一个实例的就叫做单例。

来看一个简单的枚举类
04.png

单纯通过枚举类的书写语法看不出什么内容,

通过反编译来看一下反编译后的代码,如下图:

反编译流程(jad下载地址:http://www.javadecompilers.com/jad) 1、编译:javac -encoding UTF-8 CommonStatusEnum.java 2、使用 jad 反编译 class 文件:jad.exe -sjava CommonStatusEnum.class

07.png

通过反编译后的代码能够了解到,Java 枚举默认的底层代码实现是一个饿汉模式的单例,类初始化时即进行对象的实例化操作,所以Java枚举天然就是单例,因为 Java底层默认使用单例来进行实现。


【公众号】花好夜猿
wxlogo.jpg