如何在android中正确声明静态变量?

时间:2016-02-04 16:29:43

标签: java android static global-variables static-methods

我陷入两难境地,因为我不知道什么是更好的解决方案。我有一个静态变量。

我想知道声明这些变量的最佳做法是什么。 让我们假设我在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更好吗?

4 个答案:

答案 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

我建议你阅读有关单身人士模式设计的内容。