如何在java中生成非静态全局变量?

如何在java中生成非静态全局变量?,java,static,global-variables,Java,Static,Global Variables,我正在用java制作一个乒乓球游戏,如果单击“暂停”按钮,我不知道如何暂停并让手表观看: fileItem5.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { psd = true; 但是我不能从我的其他类访问它。我宣布它是 public boolean psd; 但当我上第二节课时,它给了我 “变量必须是静态错误”。Java中没有“全局变量”这样的东西 你可以用一

我正在用java制作一个乒乓球游戏,如果单击“暂停”按钮,我不知道如何暂停并让手表观看:

fileItem5.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
psd = true;
但是我不能从我的其他类访问它。我宣布它是

public boolean psd;
但当我上第二节课时,它给了我
“变量必须是静态错误”。

Java中没有“全局变量”这样的东西

你可以用一个简单的方法来处理这种行为。类的静态字段也会提供类似的行为(尽管您在问题中排除了该选项)

如果没有多个线程读写变量,并且psd在整个应用程序中应该有一个值(由“全局变量”表示),我确实建议将其设置为静态


如果声明它的类的每个实例都必须有一个单独的psd副本,我建议fileItem5必须有一个对中定义的类psd的引用,以便能够设置它。

忘记单例,最好使用静态字段。没有其他可能性,只有这两种。

您尝试过。。。使其成为静态的?假设您的“其他类”是一个静态的内部类。为什么您不想使用静态的?实际上,Java中所谓的“静态”更像其他语言中的“全局”。虽然区别充其量是模糊的。@HotLicks-不,区别是明确的。“全局”的名称在任何地方都是可见的,因此1)可能很难定位,2)可能有冲突的定义。Java静态需要使用类名进行限定,因此不会出现这些问题。(事实上,静态在Java中不需要公开。)我怀疑是因为他试图编译一个引用变量的静态内部类而产生了错误。如果是这样,另一个选择是使内部类非静态。如果它是静态的,那么我不能从false改为true。这意味着我不能暂停游戏。当然你可以改变一个静态变量:静态布尔值isPaused;您只能更改静态最终字段:静态最终int NUM_GAME_LEVELS=30;