我陷入两难境地,因为我不知道什么是更好的解决方案。我有一个静态变量。
我想知道声明这些变量的最佳做法是什么。 让我们假设我在myStatic类中有这样一个变量。
public class myStatic(){
public static int integer = 0;
/* get value */
public int getInteger() {
return integer;
}
/* set value */
public void setInteger(int nInteger) {
integer = nInteger;
}
}
现在我必须递增这个变量或减量。 如何正确地做到这一点?
1)
myStatic.integer++;
2)
myStatic mystatic = new myStatic();
int integer = mystatic.getInteger();
int nInteger = integer+1;
mystatic.setInteger(iInteger);
使用解决方案1或2更好吗?
答案 0 :(得分:1)
我会选择数字1 ,100%,也许只是因为我很懒,但有点也是因为:
每一段知识都必须在系统中具有单一,明确,权威的表示。
这个原则一直是关键,并且在我多年的软件工程中取得了巨大的成功。当今软件工程师和开发人员的一个常见问题是,他们往往会使问题复杂化。
极端编程原理(XP),规定程序员在认为必要之前不应添加功能。
答案 1 :(得分:0)
如果需要随时随地访问该变量,则应使用选项1。 它将作为一个环境变量,即使它并不是真正的同样的东西。
有关env vars的更多信息: https://en.wikipedia.org/wiki/Environment_variable
答案 2 :(得分:0)
无需通过对象访问静态变量。事实上,这是浪费代码。 考虑一下:
public class MyStatic {
public static int i = 0;
}
您可以直接访问静态变量,如下所示:
private MyStatic myStatic = null;
myStatic.i++;
这是因为,JVM甚至不关心静态属性的对象。
答案 3 :(得分:0)
由于静态变量是类变量,它们可以被任何对象操纵,除非您将静态变量声明为私有,您必须通过公共静态方法访问它。然后,您的第一种方法是正确的,在第二种方法getInteger()
不起作用。
http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html
我建议你阅读有关单身人士模式设计的内容。