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

时间:2015-03-24 02:15:31

标签: java

我需要在同一个包中的两个类之间共享一个变量。我不想辩论“为什么”我正在使用全局变量。我不惜一切代价避免它们。

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

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

public static Screen screen = new Screen(terminal);

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

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

2 个答案:

答案 0 :(得分:1)

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

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

MyClass.terminal.frobnicate();

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

import static myPackage.MyClass.terminal; 

然后,您可以简单地引用terminal而不说明您引用MyClass的{​​{1}},而不是其他一些类的静态字段terminal

答案 1 :(得分:1)

而不是导入需要static importStatic Import Java指南部分地说静态导入构造允许对静态成员进行非限定访问,而不继承包含静态成员的类型)。类似的东西(显然是你的入门级)

import static com.foo.EntryClass.terminal;
import static com.foo.EntryClass.screen;