java - 在 Java 中使用全局(静态)变量

标签 java

我需要在同一包中的两个类之间共享变量。我不想争论我使用全局变量的“原因”。我通常不惜一切代价避免它们。

我的理解是,我需要将变量声明为静态,并且以这种方式声明的任何变量都可用于包中的所有类。我正在使用一个名为 Lanterna 的 Java 库,它用于创建基于文本的 GUI。为了将字符写入屏幕缓冲区,我必须创建一个 Screen 类型的对象(我称之为 screen)。下面的两个声明位于我的入口类的顶部附近(不在构造函数中)。

public static Terminal terminal = TerminalFacade.createTerminal(System.in, System.out, Charset.forName("UTF8"));

public static Screen screen = new Screen(terminal);

终端和屏幕类型在我的程序顶部被声明为导入语句。我在 Eclipse 中没有收到这些语句的任何错误。在我尝试访问屏幕对象的类中,我收到一条错误消息,指出此行有多个标记,屏幕无法解析。

如果需要提供任何其他信息,请告诉我。

最佳答案

虽然terminalscreen在任何地方都在范围内,但它们不会自动导入,您必须通过包含它们的类来引用它们。

例如,如果您在类 Myclass 中声明它们,则可以通过例如访问它们。

MyClass.terminal.frobnicate();

或者,虽然这在大多数情况下不是标准做法,但您可以像这样导入它们:

import static myPackage.MyClass.terminal; 

然后您将能够简单地引用terminal,而无需澄清您引用的是MyClassterminal,而不是其他类的静态名为terminal的字段。

关于java - 在 Java 中使用全局(静态)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29223877/

相关文章:

java - 错误 : the method sort (Comparable []) in the type Selection is not applicable for the arguments (int[])

java - 从属性中删除元素

java - 如何在 IntelliJ IDEA 中查找顶级未注释的类

java - 循环遍历 json 文件,将键值附加到列表

javascript - TextArea 写复选框下拉菜单?

java - 如何在一个列表中包含基类和子类的实例?

java - 在 JTable 中查看标题?

Java:如何将原始 JSON 记录为 JSON 并避免在使用 logback/slf4j 记录期间转义

java - 当没有可用选项时,如何在 Eclipse 中构建 Java 项目

java - 将 android XML 链接到 Java 类?