java枚举类型enum用法,Java枚举与泛型有手就会( 二 )



写代码是一种艺术,结构层次好的代码可以少出bug,提高效率 。而在Java编程中,什么时候用常量,什么时候用枚举呢?曾经的我也迷茫过 。当然,经历了多年的编程之后,也陆陆续续有了自己的思考 。在我看来,具备一定规则的常量集合需要使用枚举类,既包含一年四季,一周七天这种自然枚举,也包含在编译时就知道所有可能值的其它情况,比如加减乘除等运算 。
枚举值不必是固定的,可以在后面继续添加 。而对于毫无规则归类可言的一些常量:如SUCCUSS字符串、密钥串、路径等等这些,可以放在一个常量类里面糅在一起 。在《Effective Java》一书中,作者建议使用一般类加私有构造方法的方式,而在 sonar 代码质量扫描中,也将该方式定为常量类处理的推荐方式 。
而相对于常量类,枚举的优点是很明显的 。枚举更具可读性、更安全,并且功能更强大 。许多枚举不需要明显的构造器和成员变量,而有些枚举通过为每个枚举值绑定数据,并且为这些数据提供函数,可以添加额外的功能,枚举值也可以直接用来进行数据库存储 。总而言之,建议在具备相关性的前提下,能使勇枚举的地方一定要要用枚举,如果无法使用枚举时,建议使用带有私有构造函数的常量类 。

推荐阅读