在项目实际开发过程中,经常会遇到对某些固定的值、字典项的定义的需求,很多项目经常使用常量来定义,其实在jdk1.5就已经引入了枚举,使用枚举可以更好的解决这类需求,本文主要记录枚举的优势以及经常在项目中使用的方法。
知识点
- 枚举类命名 枚举类的命名通常需要Enum为后缀,枚举成员名称需要全大写,单词间用下划线隔开。
- 枚举类不允许使用 extends 关键字 枚举类默认会继承java.lang.Enum,由于java是单继承,所以在定义枚举类时不允许再继承其他类,但可以实现多个接口
- 枚举的比较可以直接使用 枚举是不允许被new出来的,枚举类里的构造函数都限定为私有化,是不允许使用public定义构造函数的。枚举的赋值,如果是同一个元素,则会指向同一个地址,所以是可以直接使用==的,当然在Enum类中,重写了equals方法(如下图),所以也是可以用equals来判断。
- 枚举常用方法
- 枚举在switch语句中的使用 枚举在switch中的使用,优势在于能控制case的范围(看以下实例),并且在idea中有相关提示
- 枚举在单例模式的使用 首先使用枚举类实现单例模式,写法相当简单,看最后的实例;其次枚举是线程安全、单一实例(由于构造方法都是私有的,不能被new)
实例
1. 最简单的枚举
在项目中经常会遇到一些固定值的定义,以往都是用常量来定义,以下用实例说明,为啥枚举的方式优于常量的方式,以下就以季节的定义为例
1.1 使用常量来实现
/**
* @Description: 季节常量定义
*/
public class SeasonConst {
/**
* 春季
*/
public static final String SPRING = "SPRING";
/**
* 夏季
*/
public static final String SUMMER = "SUMMER";
/**
* 秋季
*/
public static final String AUTUMN = "