Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在获取魔法常数的值方面,什么更实用?_Java_Constants - Fatal编程技术网

Java 在获取魔法常数的值方面,什么更实用?

Java 在获取魔法常数的值方面,什么更实用?,java,constants,Java,Constants,创建一个名为“Constants.java”的类并声明整个程序正在使用的所有神奇常量,或者将所有内容都放在名为ScreenMessage.properties的属性文件中,这更实际吗?将使用Constants.java和属性文件中返回的值从数据库中查找特定消息 例如: 在Constants.java中: public static final String UNSUCCESSFUL_LOGIN = "MSGID001"; 在ScreenMessage.properties中: UNSUCCES

创建一个名为“Constants.java”的类并声明整个程序正在使用的所有神奇常量,或者将所有内容都放在名为ScreenMessage.properties的属性文件中,这更实际吗?将使用Constants.java和属性文件中返回的值从数据库中查找特定消息

例如:

在Constants.java中:

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-是的,它们也可以像普通类一样具有属性,因此您可以为消息提供“代码”