1700445958
编写高质量代码:改善Java程序的151个建议 建议84:使用构造函数协助描述枚举项
1700445959
1700445960
一般来说,我们经常使用的枚举项只有一个属性,即排序号,其默认值是从0、1、2……这一点我们非常熟悉。但是除了排序号外,枚举还有一个(或多个)属性:枚举描述,它的含义是通过枚举的构造函数,声明每个枚举项(也就是枚举的实例)必须具有的属性和行为,这是对枚举项的描述或补充,目的是使枚举项表述的意义更加清晰准确。例如有这样的一段代码:
1700445961
1700445962
enum Season{
1700445963
1700445964
Spring(“春”),Summer(“夏”),Autumn(“秋”),Winter(“冬”);
1700445965
1700445966
private String desc;
1700445967
1700445968
Season(String_desc){
1700445969
1700445970
desc=_desc;
1700445971
1700445972
}
1700445973
1700445974
//获得枚举描述
1700445975
1700445976
public String getDesc(){
1700445977
1700445978
return desc;
1700445979
1700445980
}
1700445981
1700445982
}
1700445983
1700445984
其枚举项是英文的,描述是中文的,如此设计使其表述的意义更加精确,方便了多个协作者共同引用该常量。若不考虑描述的使用(即访问getDesc方法),它与如下接口定义的描述则很相似:
1700445985
1700445986
interface Season{
1700445987
1700445988
//春
1700445989
1700445990
int Spring=0;
1700445991
1700445992
//夏
1700445993
1700445994
int Summer=1;
1700445995
1700445996
/*……*/
1700445997
1700445998
}
1700445999
1700446000
比较两段代码,很容易看出使用枚举项描述是一个很好的解决方案,非常简单、清晰。因为是一个描述(Description),那我们在开发时就可以赋予更多的含义了,比如可以通过枚举构造函数声明业务值,定义可选项,添加属性等,看如下代码:
1700446001
1700446002
enum Role{
1700446003
1700446004
Admin(“管理员”,new Lifetime(),new Scope()),
1700446005
1700446006
User(“普通用户”,new Lifetime(),new Scope());
[
上一页 ]
[ :1.700445957e+09 ]
[
下一页 ]