对于Java开发人员来说,这似乎是一个愚蠢的问题,然而,我是Java新手,我的背景是低级c语言。我曾经包括一个头文件,其中包含与我的项目相关的所有常量。(通常是#define的)。我现在正在处理一个大型Java项目,我需要将一些常量设置为全局常量(它们适合多个类,并在项目的各个部分使用)
这让我很难决定把它放在哪里,我应该声明同一个常数几次,在每个类中声明一次吗?
很多框架,使用XML文件来声明框架的常量和定义(Hibernate,Log4J等)在我的项目中使用这种技术是明智的吗?如果是这样,如何才能轻松完成?
3条答案
按热度按时间ev7lccsx1#
和很多事情一样,有很多方法可以做到这一点。有一件事你不应该做,那就是多次声明它们--这太愚蠢了。:P
在Java中,所有的东西都必须在一个类中,所以:
1.选择一个“main”类(假设我有一个名为“FTPServerApp”的项目-我可以将它们放在那里)
1.创建一个“Util”类,包含所有这些
当你想好把它们放在哪里时,用这种方式声明它们:
这将
public
)static
)final
)。用下划线分隔的
ALL_CAPS_FOR_CONSTANT_NAMES
是Java中的约定。所以,如果这是在一个名为
FTPServerAPP
的类中声明的,并且你有一个名为SERVICE_PORT
的常量,它可能是:。。。你可以从任何类访问它,就像这样。。
nfs0ujit2#
看看枚举类型(http://download.oracle.com/javase/tutorial/java/javaOO/enum.html)它们应该提供一种机制来提供常量,而无需定义具体的类(或具有所需常量的接口,这是人们使用的另一种选择)。
我发现另一个有用的技巧(类似于上面给出的FTPServerApp示例)是为任何子系统/组件/等定义一个Context......它不仅保存该系统中组件所需的常量,而且可以保存任何您希望变得更可见或不希望单个组件保持的状态。我相信这是沿着GoF模式之一的路线,但是我已经很久没有看过那本书了,我不能确定(我现在懒得去看它!)
lskq00tm3#
这是一个很老的问题了。但是我的Ans在jefflunt的Ans之上增加了一些要点。让我们考虑一下你想要一个
MyConstant
类1.将类设置为
final
(如果希望扩展它,请忽略)final static
public
protected
private
。理想情况下,您不希望创建此Constant类的多个示例static
initialize()
方法。