java中的java枚举类型到底有什么作用?

java中的枚举类和常量类区别在哪儿?
按投票排序
枚举是枚举,和常量类能一样么,名字不一样,写法不一样,效果也不一样,你应该问他俩哪里一样,一样的地方就是每个枚举值就是一个常量类。
你应该看看 枚举类型 编译过后的反编译内容 就大概清楚了
假如有一笔业务需要审核,审核状态分:未审核,审核中,审核通过,审核不通过。我们在程序里是否可以直接这么写:if(state==1){//1代表未操作
}将状态标识直接写在代码里面(硬编码),只图一时方便,却是后患无穷,如果有一天你需要修改状态标识,用0代表未审核而不是1,你不得不将所有与该标识相关的代码都找出来一个个改,另外,在编码过程中,标识输入错误的概率是比较高的,一不小心把0输入成了10,虽然不会提示任何编译错误,但运行结果将是出乎人的意料的。于是我们很快想到可以用常量代替:publicstaticfinalintUNAUDIT = 0;相关判断代码则是:if(state==CONSTANT.UNAUDIT){
//...... }这段代码比硬编码更加健壮容易维护,但是仍然有不足之处。1、UNAUDIT是编译期常量,如果其值被改变,那么使用方需要重新编译。2、没有简便的方法获取标识代表的字符串描述。于是我们用枚举类来代替常量。publicenum AuditState {UNAUDIT(1),AUDITING(2),AUDIT_SUCCESS(3),AUDIT_FAIL(4);privatefinalint
AuditState(int statenum){this.statenum =
}publicint getStatenum() {return
}}调用如下:if (state == AuditState.UNAUDIT.getStatenum()) {
//AuditState.UNAUDIT.toString()获取字符串描述
System.out.println(AuditState.UNAUDIT.toString() + "标识是 "
+ AuditState.UNAUDIT.getStatenum());
} else {//......
}枚举类还有更加强大的功能,如添加字段,方法,还可以对他进行遍历访问欢迎关注公众号 java_daren
已有帐号?
无法登录?
社交帐号登录<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&

我要回帖

更多关于 java枚举类型 的文章

 

随机推荐