假如有一笔业务需要审核,审核状态分:未审核,审核中,审核通过,审核不通过。我们在程序里是否可以直接这么写:

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 {

//......

}

枚举类还有更加强大的功能,如添加字段,方法,还可以对他进行遍历访问

欢迎关注公众号 drjava

java 枚举常量_java中的枚举类和常量类区别在哪儿?相关推荐

  1. java 7种枚举类型_Java中的枚举类型

    枚举类比较用 == 还是 equals,有啥区别? java 枚举值比较用 == 和 equals 方法没啥区别,两个随便用都是一样的效果.因为枚举 Enum 类的 equals 方法默认实现就是通过 ...

  2. java 枚举迭代_Java中的枚举和迭代器之间的区别

    java 枚举迭代 Java中的枚举与迭代器 (Enumeration vs Iterator in Java) Here, we will see how Enumeration differs f ...

  3. java 软引用_Java中弱引用和软引用的区别以及虚引用和强引用介绍

    知道弱引用和软引用的概念与如何使用它们是两码事,引用类在垃圾回收工作的过程中有重要作用.我们都知道垃圾回收器会回收符合回收条件的对象的内存,但并不是所有的程序员都知道回收条件取决于指向该对象的引用类型 ...

  4. java replaceall函数_JAVA中string.replace和string.replaceAll的区别及用法

    展开全部 JAVA中string.replace()和string.replaceAll()的区别及用法乍一看,字面上理解好像replace只替换第一个出现的字符(受javascript的影响),32 ...

  5. java listfiles 使用_Java中list()和listFiles()方法之间的区别

    java.io包的名为File的类表示系统中的文件或目录(路径名).为了获得目录中所有现有文件的列表,此类提供了list()和ListFiles()方法. 它们之间的主要区别是该列表()方法返回一个字 ...

  6. java中的枚举类_java中的枚举类型

    java中为了对参数类型使用限定,引入了泛型,实现了在编译期对参数类型是否合法的判断.同样,java为了对参数的值的限定,引入了枚举类,实现了在编译期对参数的值是否合法的判断. 首先我们用自定义类的方 ...

  7. java中的枚举_Java中的枚举

    java中的枚举 Enum was introduced in Java 1.5 as a new type whose fields consists of a fixed set of const ...

  8. java 枚举_Java中的枚举类型(Enum)详解

    文章前记 程序员工作久了便可能整日忙碌于"增删改查"中,迷失方向,毫无进步. 该公众号致力于分享软件开发相关的原创干货,助你完成从程序员到架构师的进阶之路! 努力!做一个NB的Co ...

  9. java 动态更新_java动态更新枚举类

    工作中遇到需要对枚举类的值进行动态更新 手动改不现实也不方便 现记录下来方便以后学习使用 1.在工程utils包中添加动态更新枚举类得工具类(根据自己得项目,放到指定位置调用就可以) 2.一开始陷入了 ...

最新文章

  1. UVA - 1045 The Great Wall Game(二分图最佳完美匹配)
  2. 当前系统license已过期什么意思_saas系统是什么意思?
  3. 零基础python入门书籍-零基础学Python,不容错过的入门书籍
  4. pycharm 通过 SFTP 远程编辑项目的配置
  5. Python全栈 MongoDB 数据库(数据的修改)
  6. docker安装的环境
  7. 网页设计如何排成一列_网页设计如何影响以及改善SEO?
  8. 十大应用在数学的计算机语言
  9. Spring REST XML和JSON示例
  10. 一篇综述带你全面了解课程学习(Curriculum Learning)
  11. IplImage 应用解读
  12. tcp和icmp测速哪个好_ping icmp和tcp区别:
  13. ztree 自定义参数_jQuery Ztree基本用法
  14. 前十大编程语言你会几种?
  15. 我的IT之路2011(一)
  16. 机器视觉(四)——打光
  17. Mybatis开启驼峰命名,作用
  18. 上buff——状态模式
  19. 带你白嫖程序带宽限制命令Trickle
  20. CSO关注:企业安全遭受攻击的15个迹象

热门文章

  1. Java竞选组长发言_竞选组长的发言稿_450字
  2. spm oracle cloud,oracle11g新特点——SQLPlanManagement(SPM)-Oracle
  3. python 发送邮件正文字体设置_python 文字 坐标python smtplib模块发送SSL/TLS安全邮件实例...
  4. 实现redis 手动_Redis精华所在,一口气说完Redis的主从复制和哨兵模式
  5. mardown文件图片技巧
  6. 手机qq显示鸿蒙在线,手机QQ显示对方朋友网络状态是“手机在线”是什么意思,明明对方是WiFi在线,怎么显示的是手机在线...
  7. 卡尔曼滤波与组合导航原理_卫星知识科普:一种基于卫星共视的卡尔曼滤波算法!...
  8. wordpress 模板中的链接_WordPress 官方AMP插件已更新至2.0版
  9. Mysql当前模式让不记录日志_终于有人把MySQL 三大日志讲清楚了
  10. matlabrobert锐化_Matlab图像处理—锐化滤波器