我需要在同一包中的两个类之间共享变量。我不想争论我使用全局变量的“原因”。我通常不惜一切代价避免它们。
我的理解是,我需要将变量声明为静态,并且以这种方式声明的任何变量都可用于包中的所有类。我正在使用一个名为 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 中没有收到这些语句的任何错误。在我尝试访问屏幕对象的类中,我收到一条错误消息,指出此行有多个标记,屏幕无法解析。
如果需要提供任何其他信息,请告诉我。
最佳答案
虽然terminal
和screen
在任何地方都在范围内,但它们不会自动导入,您必须通过包含它们的类来引用它们。
例如,如果您在类 Myclass
中声明它们,则可以通过例如访问它们。
MyClass.terminal.frobnicate();
或者,虽然这在大多数情况下不是标准做法,但您可以像这样导入它们:
import static myPackage.MyClass.terminal;
然后您将能够简单地引用terminal
,而无需澄清您引用的是MyClass
的terminal
,而不是其他类的静态名为terminal
的字段。
关于java - 在 Java 中使用全局(静态)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29223877/