我一直在阅读本网站上关于常量用法的很多帖子。
问题: 什么时候我应该使用Enums作为常量,使用类或接口。
我看到了我想要解决的两个关键问题。
示例:
示例:
从我读过的所有内容来看,这是我认为我掌握的内容以及我正在寻找的意见。
对于情况1: 设计方法:使用最终类和静态导入 见到这里:What is the use of interface constants?
情况2: 设计方法:使用Enums将这些常量表示为对象。
要记住的其他要点:
提前感谢您的想法和意见。
答案 0 :(得分:12)
您放置它的全局常量实际上应该在属性文件中,因为它允许每个应用程序单独配置它们而无需修改代码。对于特定于对象的常量,我对Enum
与static final
的一般经验法则通常倾向于有多少元素以及这些元素的相关性。如果它们之间存在很大的关系,例如Suits
中的Cards
,那么我会选择枚举。如果它是用户的默认年龄,那么这将成为最终版本,因为没有目的使其成为枚举,因为它不需要在许多领域中被引用。这些只是对我接触它的每种方式的一些想法。
答案 1 :(得分:3)
不同项目使用的全局常量:Enum
最好在课堂上使用Enum
而不是public static final
成员。我觉得更干净,更容易理解。
对象特定常量:public static final members in Class
。因为,只有在对象的范围内才需要它们,因此不需要为此创建新的枚举。
很好read
更新(修复损坏的链接):
答案 2 :(得分:0)
听起来几乎所有列出的数字1和2都属于配置文件或数据库表。
当您的员工获得加薪或页面名称更改时,您是否要重新编译代码?
除非有令人信服的理由,否则所有其他常量应该被建模为枚举。通过这种方式,您可以实现快速对象相等比较的好处,并避免与String常量相关的问题。
然而,这些枚举的范围是特定于应用程序的。如果枚举仅由类使用,则它应该是私有枚举。如果它由多个类共享,那么它应该在它自己的类定义文件中。