如果所有代码都在run()方法内,如何关联实例变量



我应该创建一个游戏,我们可以自由地创建它……但我不知道我在做什么。我复制了以前实验室的格式,因为我需要一种运行它的方法,但现在我遇到了一个问题。我的Gui类如下:

public class Gui implements Runnable {
    public Gui() { }
    ArrayList<Tile> _al;
    @Override
    public void run() {
          //where I want the _al variable to be used
    }
}

我复制的代码使用了一个Driver类来运行这个方法:

public class Driver {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Gui());
    }
}

我们还没有在课堂上讨论过这种方法,但从谷歌搜索中我了解到这是程序运行所必需的。实验室的难度大增,所以我现在迷路了。我确信有一种简单的方法可以格式化所有代码,但我不知道run方法和main之间的关系,也不知道如何创建它,以便在我的代码中创建关联关系。我搜索过的东西都没有帮助,所以我希望这个问题没问题。

如果所有代码都在run()方法中,如何关联实例变量?

您可以让Gui采用构造函数参数来允许共享状态更新:

public class Gui implements Runnable {
    private final List<Tile> tiles;
    public Gui(List<Tile> tiles) {
        this.tiles = tiles;
    }
    @Override
    public void run() {
          tiles.add(new Tile());
    }
}

并修改驱动程序以使用:

public final class Driver {
    public static void main(String[] args) {
        List<Tile> tiles = new ArrayList<Tile>();
        SwingUtilities.invokeLater(new Gui(tiles));
    }
}

你做得对。可以在run方法中使用_a1

_a1实例变量。您可以判断这一点,因为它没有static修饰符。同样,run是一个实例方法。因此它可以访问_a1。然而,CCD_ 7的每个新实例都获得其自己的CCD_。

如果这不是您想要的,那么最简单的解决方法就是在_a1中添加static修饰符。然后,它将在Gui的所有实例之间共享,并且仍然可以从run访问。我相信Swing不会同时运行可运行程序,所以不应该担心并行访问。

最新更新