我需要在同一个包中的两个类之间共享一个变量。我不想辩论“为什么”我正在使用全局变量。我不惜一切代价避免它们。
我的理解是我需要将我的变量声明为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中的任何错误。在我尝试访问屏幕对象的类中,我收到错误,说明此行的多个标记,屏幕无法解析。
如果需要提供任何其他信息,请告知我们。
答案 0 :(得分:1)
虽然terminal
和screen
在任何地方都在范围内,但它们不会自动导入,您必须通过包含它们的类来引用它们。
例如,如果您在类Myclass
中声明了它们,则可以通过例如访问它们。
MyClass.terminal.frobnicate();
或者,虽然在大多数情况下这不是标准做法,但您可以像这样导入它们:
import static myPackage.MyClass.terminal;
然后,您可以简单地引用terminal
而不说明您引用MyClass
的{{1}},而不是其他一些类的静态字段terminal
。
答案 1 :(得分:1)
而不是导入需要static import
(Static Import Java指南部分地说静态导入构造允许对静态成员进行非限定访问,而不继承包含静态成员的类型)。类似的东西(显然是你的入门级)
import static com.foo.EntryClass.terminal;
import static com.foo.EntryClass.screen;