据我了解,System.setProperty(“key”,”value”)
和 System.getProperty(“key”)
用于保存和检索系统属性和用户定义的属性。可以在应用程序内的任何位置访问设置的值。
此外,我知道当一个变量被声明为 public
和 static
时,它就变成了一个常量,并且在应用程序中的任何地方都可用。
我想知道 2 个哪个更有优势并且是更好的选择。我能想到的一个方面是,当我们想要检索 xml 文件中的值时,System.setProperty 非常有用[使用 ${key}]。使用公共(public)静态变量无法实现相同的效果。
我的问题是
- 还有其他好处吗?
- 哪一个是更好的选择?
- 什么情况下应该使用 System.setProperty/getProperty 和公共(public)静态变量?
提前致谢。
最佳答案
Setter 可以进行进一步的测试。例如针对 null 进行测试、针对错误值进行测试等...
Setter 通常是更好的选择,但是,没有 Setters 的类可能会更好,不要给用户破坏程序的方法
public static Variable variable;
//In other file
variable = null;
公共(public)静态变量根本不是线程安全的!!!(也许如果它是原子的)
除非处理我确实想要进行大量更改的内容,例如 Vector2D/3D,否则我从不使用公共(public)静态(在这种情况下,无论如何它都不是公共(public)静态,因为它不是静态的)。除此之外,我这样做只是因为用户无法将 x、y、z 归零,因为它是 float/int。通常我会使用执行我想要的操作的方法,而不是简单的 Setter。
(例如:不是一个很好的例子,但我认为它说明了我的意思。使用 Person.eat() 代替 Person.setState(State.EATING))
关于java - System.setProperty 还是公共(public)静态变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38656345/