System.setProperty还是公共静态变量?

时间:2016-07-29 10:18:22

标签: java static

我了解System.setProperty(“key”,”value”)System.getProperty(“key”)用于保存和检索系统属性和用户定义的属性。可以在应用程序中的任何位置访问设置的值。

此外,我知道当变量声明为publicstatic时,它变为常量,并且在应用程序中的任何位置都可用。

我想知道2这是有利的,也是更好的选择。我想到的一个方面是当我们想要检索xml文件中的值[使用$ {key}]时,System.setProperty非常有用。使用公共静态变量无法实现同样的目的。

我的问题是

  1. 还有其他好处吗?
  2. 哪一个是更好的选择?
  3. 在什么情况下应该使用System.setProperty / getProperty和公共静态变量?
  4. 提前致谢。

2 个答案:

答案 0 :(得分:0)

Setter可以进行进一步的测试。就像测试null,测试坏值等...

Setter通常是一个更好的选择,然而,没有Setter的课程可能更好,不会给用户提供破坏程序的方法

public static Variable variable;

//In other file
variable = null; 

公共静态变量根本不是线程安全的!!!(也许它是原子的)

除非处理我真正想要改变的东西,比如Vector2D / 3D,我从不使用公共静态(在这种情况下,它不是公共静态,因为它不是静态的)。除此之外,我只能创建它,因为用户不能将x,y,z归零,因为它是一个float / int。通常我会使用我想要的方法而不是简单的Setter。

(例如:不是一个很好的例子,但我认为它显示了我的意思。而不是使用Person.eat()的Person.setState(State.EATING)

答案 1 :(得分:0)

运行java程序时,实际上是在启动JVM实例。该实例将拥有自己的系统属性。这是你可以放置你的属性的地方。当你运行另一个程序时,它将拥有它自己的系统属性。

Properties对象是Hash表的子类型,它也是线程安全的。但是如果你想使用公共静态变量,你还必须在多线程程序中处理同步访问。