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

在Java中使用全局(静态)变量,java,Java,我需要在同一个包中的两个类之间共享一个变量。我不想讨论我使用全局变量的“为什么”。我通常不惜一切代价避开它们 我的理解是,我需要将变量声明为静态变量,并且以这种方式声明的任何变量都可用于包中的所有类。我正在使用一个名为Lanterna的Java库,用于创建基于文本的GUI。为了将字符写入屏幕缓冲区,我必须创建一个屏幕类型的对象(我称之为screen)。下面的两个声明放在我的entry类的顶部附近(不在构造函数中) 终端和屏幕类型在我的程序顶部声明为导入语句。我在Eclipse中没有收到这些语句的

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

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

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


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

虽然
终端
屏幕
在所有范围内,但它们不会自动导入,您必须通过包含它们的类引用它们

例如,如果您在class
Myclass
中声明了它们,您将通过

MyClass.terminal.frobnicate();
或者,尽管在大多数情况下这不是标准做法,但您可以这样导入它们:

import static myPackage.MyClass.terminal; 

然后,您将能够简单地引用
终端
,而无需说明您引用的是
MyClass
终端
,而不是其他类的名为
终端
的静态字段,您需要一个
静态导入
(Java指南部分指出,静态导入构造允许对静态成员进行非限定访问,而无需继承包含静态成员的类型)


您会收到一个错误,说您有多个错误。请告诉我们这些错误是什么。只是为了澄清
static
并没有规定访问级别,它确保变量属于类本身(而不是每个实例),并可通过语法
MyClass.myVar
访问。修改器
public
private
protected
和default(无关键字)是控制可见性的关键。
import static myPackage.MyClass.terminal; 
import static com.foo.EntryClass.terminal;
import static com.foo.EntryClass.screen;