提高你的Java代码质量吧:使用构造函数协助描述枚举项
一、分析
一般来说,我们经常使用的枚举项只有一个属性,即排序号,其默认值是从0、1、2... ...。但是除了排序号外,枚举还有一个(或多个)属性。
二、场景
比如,可以通过枚举构造函数声明业务值,定义可选项,添加属性,看如下代码:
enum Role{ Admin("管理员",new Lifetime(),new Scope()); User("普通用户",new Lifetime(),new Scope()); //中文描述 private String name; //角色生命周期 private Lifetime lifeTime; //权限范围 private Scope scope; Role(String _name,Lifetime _lt,Scope _scope){ name = _name; lifeTime = _lifeTime; scope = _scope; } /**name,lifeTime,scope的get方法较简单,不再赘述*/ }
可以看书,这样一个描述可以使开发者对Admin、User两个常量有一个立体多维的认知,有名称、生命周期、还有范围,而且还可以在程序中方便地获取此类的属性。
三、建议
推荐大家在枚举定义中为每个枚举定义描述,特别是在大规模项目开发中,大量的常量项定义使用枚举项描述比在接口常量或类常量中增加注释的方式更友好得多,简洁的多。