枚举,的好处就是,在代码输入的时候,可以明确知道可以输入哪些值。而常量,则无法限制。
优点1. 强制性约束
- 可以让调用者直观且明确的知道,可以传递哪些值
- 可以约束调用者,必须用指定的Enum。 (看例子)
例子:
优点2 可以直接使用==
可以直接使用并且,不需要害怕空异常
优点3 可以用Switch
枚举格式
枚举的实质
- 枚举类实际是 Enum的子类
-
Enum 继承了Object 所以,拥有Object 所有方法。
-
Enum可以实现接口。不能继承。
java 是单继承,所以enum不能再使用extends 。 但是可以实现其他接口。
-
枚举字面量
例如:上面的COMMIT 字面量就是COMMIT字符串
-
枚举特有方法
-
枚举构造器
咱们可以定义自己的构造器,但是枚举内部都会调用Enum的构造器存入 与 枚举字面量
通常业务经常会定义code 与 name, 例如: COMMIT(“01”, “提交”)。 是code , 是name。
经常会有通过 查找对应的枚举,或者通过 查找对应的枚举。
问题案例
经常实现:
问题是每个枚举类型,都需要写一遍。造成大量的复制粘贴操作
解决案例
思路:枚举虽然不能继承,但是可以通过接口。使用工具类来完成操作。
接口:
实现类: