目录
一、枚举的优点:
1 增强代码可读性:
枚举可以让你代码看起来很舒服,而且常量统一管理起来,当项目很大的时候很容易管理。
2 传递参数错误:
可以减少参数传递的错误性
3 去除equals两者判断
由于常量值地址唯一,使用枚举可以直接通过“==”进行两个值之间的对比,性能会有所提高。
4 编译优势(与常量类相比)
常量类编译时,常量被直接编译进二进制代码中,常量值在升级中变化后,需要重新编译引用常量的类,因为二进制代码中存放的是旧值。
枚举类编译时,没有把常量值编译到代码中,即使常量值发生改变,也不会影响引用常量的类。
5 修改优势(与常量类相比)
枚举类编译后默认final class,不允许继承可防止被子类修改。常量类可被继承修改、增加字段等,易导致父类不兼容。
6 枚举型可直接与数据库交互
7 Switch语句优势
使用int、String类型switch时,当出现参数不确定的情况,偶尔会出现越界的现象,这样我们就需要做容错操作(if条件筛选等),使用枚举,编译期间限定类型,不允许发生越界。
编辑
二、枚举的特性
- 不能被继承
- java 不能使用 = 赋值
- enum 可以通过方法显示赋值
- enum 可以添加普通方法、静态方法、抽象方法、构造方法
- 枚举可以实现接口
三、使用场景
1、作为普通的常量使用:
如 星期、季节、颜色、城市 等等;通常配合 switch 语句使用。
2、往枚举中添加变量:
构造函数、以达到灵活获取指定值的目的。
3、通常用于一些业务系统中定义一些固定值:
如用于匹配数据库中的字段值等。在平时数据库表的设计中,我们一般以数字来代表一些常量,那么在 java 中就可以通过枚举来将数据库字段的数值和所代表的常量对应起来。
4、往枚举中添加自己特定方法:
以实现自己所需的相关业务逻辑。比如:可以通过状态码获得对应的状态码信息。
强烈建议当你需要定义一组常量时,使用枚举类型。
尽量不要使用枚举的高级特性,事实上高级特性都可以使用普通类来实现,没有必要引入复杂性!
在项目中一般都是通过枚举来定义常量数据字典。