如果所有代码都在 运行() 方法中,如何关联实例变量?
How to associate an instance variable if all the code is inside a run() method?
我应该创建一个游戏,我们可以自由地创建它...但我不知道我在做什么。我复制了以前实验室的格式,因为我需要一种方法来 运行 它,但现在我遇到了问题。我的桂class如下:
public class Gui implements Runnable {
public Gui() { }
ArrayList<Tile> _al;
@Override
public void run() {
//where I want the _al variable to be used
}
}
我复制的代码使用了驱动程序class到运行这个方法:
public class Driver {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Gui());
}
}
我们没有在 class 中讨论过这种方法,但是从谷歌搜索我了解到这是程序运行所必需的。实验室的难度有了巨大的飞跃,所以我现在迷路了。我确定有一种简单的方法来格式化所有代码,但我不知道 运行 方法和 main 之间的关系是什么,或者我如何才能做到这一点以便在我的代码中建立关联关系代码。我搜索的内容没有任何帮助,所以我希望这个问题没问题。
如果所有代码都在 运行() 方法中,如何关联实例变量?
你做对了。您可以在 run
方法中使用 _a1
。
_a1
是一个 实例 变量。你可以这么说,因为它没有 static
修饰符。同样,run
是一个实例方法。因此它可以访问 _a1
。但是,Gui
的每个新实例都会得到自己的 _a1
实例。
如果这不是您想要的,绝对最简单的解决方法是将 static
修饰符添加到 _a1
。然后它将在 Gui
的所有实例之间共享,并且仍然可以从 run
访问。我相信 Swing 不会 运行 运行 同时启用,所以不应该担心并行访问。
您可以使 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));
}
}
我应该创建一个游戏,我们可以自由地创建它...但我不知道我在做什么。我复制了以前实验室的格式,因为我需要一种方法来 运行 它,但现在我遇到了问题。我的桂class如下:
public class Gui implements Runnable {
public Gui() { }
ArrayList<Tile> _al;
@Override
public void run() {
//where I want the _al variable to be used
}
}
我复制的代码使用了驱动程序class到运行这个方法:
public class Driver {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Gui());
}
}
我们没有在 class 中讨论过这种方法,但是从谷歌搜索我了解到这是程序运行所必需的。实验室的难度有了巨大的飞跃,所以我现在迷路了。我确定有一种简单的方法来格式化所有代码,但我不知道 运行 方法和 main 之间的关系是什么,或者我如何才能做到这一点以便在我的代码中建立关联关系代码。我搜索的内容没有任何帮助,所以我希望这个问题没问题。
如果所有代码都在 运行() 方法中,如何关联实例变量?
你做对了。您可以在 run
方法中使用 _a1
。
_a1
是一个 实例 变量。你可以这么说,因为它没有 static
修饰符。同样,run
是一个实例方法。因此它可以访问 _a1
。但是,Gui
的每个新实例都会得到自己的 _a1
实例。
如果这不是您想要的,绝对最简单的解决方法是将 static
修饰符添加到 _a1
。然后它将在 Gui
的所有实例之间共享,并且仍然可以从 run
访问。我相信 Swing 不会 运行 运行 同时启用,所以不应该担心并行访问。
您可以使 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));
}
}