在Java中声明全局变量

时间:2011-11-20 13:23:15

标签: java applet

我正在使用applet创建一个在线测试Web项目。我想声明一个int类型的变量,它跟踪正确答案的数量。那么需要声明的变量在哪里才能在所有帧中访问?

3 个答案:

答案 0 :(得分:2)

正如其他人所提到的,您可以使用public static声明全局变量:

public class MyClass {

    public static int globallyVisibleInt = ...;

    // or

    private static int visibleThroughAccessors = ...;

    public static void messWithGlobalState(int newValue) {
        visibleThroughAccessors = newValue;
    }

    public static int seeGlobalState() {
        return visibleThroughAccessors;
    }

}

然后,要访问和使用此变量,任何其他代码只需导入此类:

// this code is inside another class and package
MyClass.globallyVisibleInt++;

// or
MyClass.messWithGlobalState(14);

但是,这种全局变量的使用通常不受欢迎。 OOP为您提供了许多处理问题的工具,您可能不需要针对这种特定情况的全局变量。 / p>


Here's关于避免全局变量的好文章 - 为什么以及如何。讨论:

  

与所有HeuristicRules一样,这不是100%适用的规则。当代码不使用全局变量时,代码通常更清晰,更容易维护,但也有例外。它在精神上与GotoConsideredHarmful相似,尽管使用全局变量不太可能让你成为一个顽固的黑客。

为什么在不必要时应避免使用全局变量:

  • 非局部性
  • 无访问控制或约束检查
  • 隐式耦合
  • 并发问题
  • 测试和限制

全球变量的替代方案:

  • ContextObject
  • 有状态程序
  • 单身人士模式
  • Hidden Globals

答案 1 :(得分:1)

java中没有全局变量。您可以使用公共静态访问器

在某个类或私有静态字段中声明公共静态字段

答案 2 :(得分:1)

OOP中没有全局变量,但您可以声明一个公共静态变量。但这不是好习惯!您应该研究如何在您的情况下处理它并找到另一种方式。