对于我的许多java项目,我广泛使用数据库,我通常做的是拥有一个property.xml
文件来保存我的所有字符串和设置。
然后我会有一个类CNST
来保存与xml文件中的静态常量相对应的所有静态常量。
这些常量在程序启动时由xml文件初始化一次,并在程序的后面任何地方用作全局变量。
然而,在阅读了这些天的许多文章之后,似乎根本不使用全局变量就不是一个好习惯。所以,任何人都可以指出这种情况的良好做法吗?感谢。
答案 0 :(得分:1)
使用全局变量意味着许多可以操作数据的类都可以看到它们。
所以你必须要处理你的数据,因为它是广为人知的。
如果你正在使用多线程,那么你就会遇到麻烦,因为任何人都可以修改这些数据,因此很多数据的范围都会被破坏。
作为一种实践,我遵循以下几点:
答案 1 :(得分:1)
一般情况下,应该避免使用全局变量=>然而,如果它们是常数,则不是问题。对于像这样的情况,当您(大概)在开始时初始化此全局设置包装器对象并且之后没有任何更改时,有以下选项:
public static final
块static
)
private static final
块中初始化变量static
并通过getter公开private final
第2点和第3点比第1点更有优势,在getter方法中你已经封装了变量的值,并且可以更改/插入代码来操作返回到调用方法的值而不影响依赖于它的(调用)代码
答案 2 :(得分:0)
您可以自由使用公共静态常量或变量。如果您使用非静态变量,那么良好的做法是使用Getters和Setters。如果你的类只包含静态常量,那么你也可以使用私有构造函数来限制创建这个类的实例。
public class Global {
public static final int A;
public static final int B;
private Global() {} // use only when you have only static fields and methods
static {
A = 1;
B = 2;
}
}
答案 3 :(得分:0)
您可以创建一个public static
变量而不是全局变量,这是一个更好的主意。
查看此link。
另一种方法是创建一个遵循singleton
模式的类,因此只能有一个类的实例,并将变量保存在单例类中,并使用get
和{ {1}}方法。
编辑1: -
在声明常量的情况下寻找旧样式。这样的事情: -
set
我不建议在这种情况下创建一个类。