java中的枚举类和常量类的区别
来源:互联网 发布:成都亦知科技有限公司 编辑:程序博客网 时间:2024/06/16 11:51
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
假如有一笔业务需要审核,审核状态分:未审核,审核中,审核通过,审核不通过。我们在程序里是否可以直接这么写:
if(state==1){//1代表未操作
//操作
}else{
//......
}
将状态标识直接写在代码里面(硬编码),只图一时方便,却是后患无穷,如果有一天你需要修改状态标识,用0代表未审核而不是1,你不得不将所有与该标识相关的代码都找出来一个个改,另外,在编码过程中,标识输入错误的概率是比较高的,一不小心把0输入成了10,虽然不会提示任何编译错误,但运行结果将是出乎人的意料的。
于是我们很快想到可以用常量代替:
publicstaticfinalintUNAUDIT = 0;
相关判断代码则是:
if(state==CONSTANT.UNAUDIT){
//操作
}else{
//......
}
这段代码比硬编码更加健壮容易维护,但是仍然有不足之处。
1、UNAUDIT是编译期常量,如果其值被改变,那么使用方需要重新编译。
2、没有简便的方法获取标识代表的字符串描述。
于是我们用枚举类来代替常量。
publicenum AuditState {
UNAUDIT(1),
AUDITING(2),
AUDIT_SUCCESS(3),
AUDIT_FAIL(4);
privatefinalint statenum;
AuditState(int statenum){
this.statenum = statenum;
}
publicint getStatenum() {
return statenum;
}
}
调用如下:
if (state == AuditState.UNAUDIT.getStatenum()) {
//AuditState.UNAUDIT.toString()获取字符串描述
System.out.println(AuditState.UNAUDIT.toString() + "标识是 "
+ AuditState.UNAUDIT.getStatenum());
} else {
//......
}
枚举类还有更加强大的功能,如添加字段,方法,还可以对他进行遍历访问
- java中的枚举类和常量类的区别
- java枚举与常量类的区别
- 枚举类和常量的区别
- 枚举与常量类的区别
- JAVA中常量使用常量类或者常量接口,还是使用枚举的区别
- Java: 枚举(enumeration)和常量的区别
- 接口(类)常量与枚举常量的区别
- 枚举类和常量
- 枚举和常量区别
- 枚举类的常量定义
- java枚举类型和java类的区别
- 宏,枚举,常量的区别
- 项目代码优化:使用Java枚举常量代替类常量
- 类里定义常量和枚举
- Java枚举常量的使用
- java枚举常量的使用
- Java中的字符串常量池与Java中的堆和栈的区别
- Java中的字符串常量池与Java中的堆和栈的区别
- 进程管理API之task_tgid_nr_ns
- table 中 点击某行,获取这一行的数据弹框显示,或进行其他的操作
- J2EE开发模型分析
- css sprites的学习
- java 生成读取 google protobuf 2.4.1 dome
- java中的枚举类和常量类的区别
- 明德扬FPGA-全网公开课-第02期-《算法的verilog实现-fir滤波器》
- 数据库sql查询优化
- mysql日志
- springboot 集成 swagger生成在线文档
- Kafka的配置文件详细描述
- SpringMVC与Struts2区别与比较总结
- Python基础篇之切片
- GULP 编译less以及搭建本地开发环境