Java 在获取魔法常数的值方面,什么更实用?
创建一个名为“Constants.java”的类并声明整个程序正在使用的所有神奇常量,或者将所有内容都放在名为ScreenMessage.properties的属性文件中,这更实际吗?将使用Constants.java和属性文件中返回的值从数据库中查找特定消息 例如: 在Constants.java中:Java 在获取魔法常数的值方面,什么更实用?,java,constants,Java,Constants,创建一个名为“Constants.java”的类并声明整个程序正在使用的所有神奇常量,或者将所有内容都放在名为ScreenMessage.properties的属性文件中,这更实际吗?将使用Constants.java和属性文件中返回的值从数据库中查找特定消息 例如: 在Constants.java中: public static final String UNSUCCESSFUL_LOGIN = "MSGID001"; 在ScreenMessage.properties中: UNSUCCES
public static final String UNSUCCESSFUL_LOGIN = "MSGID001";
在ScreenMessage.properties中:
UNSUCCESSFUL_LOGIN=MSGID001
[新增:2013-5-18]:
实际上,这个问题的本质是:如果我把神奇的常量放在Constants.java中,我可以通过简单的“Constants.UNSUCCESSFUL_LOGIN”来检索常量的值,但是如果我使用属性文件,我会在程序中再次嵌入另一个常量,因为属性文件的文件名,如果属性文件不在同一个包中,则比加载属性文件值的类的包更困难。我认为枚举是当今定义常量的一个好的、可接受的选择 最佳实践是不要使用
常量.java
将常量放在与其相关的位置附近,如MAX_VALUE
常量在Integer
和Long
类中定义的方式
如果您有几个相同“类型”的常量,如您的消息示例,请为它们创建一个
enum
。这取决于您的需要
利与弊:
如果您有一些a Constants.java,则可以访问常量的类型,而属性文件则不是这样
另一方面,属性文件可以在不重新编译的情况下更改
在这里,您似乎需要一些ID来从数据库检索一些消息。这些消息与应用程序的用例(每个消息周围的特定代码)紧密关联。因此,我认为您应该按照Juned Ahsan的建议使用一些枚举。它们将更容易在您的代码中引用,并且您将避免输入错误。您是在谈论程序中的所有常量,还是仅仅是消息代码?在后一种情况下,属性文件是正常的方法。@DuncanJones:all constants如果您想在不需要重新编译应用程序的情况下更改常量,请使用后一种方法(但请注意,其他人可能会更改它们…)枚举可以被许多类使用吗?@chrismsawi-是的,它们也可以像普通类一样具有属性,因此您可以为消息提供“代码”