枚举
使用静态常量的弊端
- 安全性低,可接受枚举外的值
- 可读性,尤其是打印日志时
- 枚举的本质就是一个类(在编译时期转换成对应final类的形式,继承自java.lang.enum)
- 底层实现线程安全
- 反编译展示的枚举类型都是static类型的属性,在类被加载后被初始化,当一个Java类第一次被真正使用到的时候静态资源被初始化、Java类的加载和初始化过程都是线程安全的
public enum ColorEnum {
RED,GREEN,YELLOW
}
枚举是实现单例的最好方式
- 写法简单
- 可以防止反序列化重新创建对象
- 线程安全
- 唯一缺点: 枚举类的创建对象方式必须使用相应的方法,协同开发时,其他人并不一定知道
public enum Singleton {
INSTANCE;
public void whateverMethod() {
}
}