如何为一个类的所有实例(都在列表中)调用一个方法?

时间:2019-05-01 12:07:17

标签: java

对于我的小游戏,我的主类中有一个名为“ walls”的ArrayList,用于容纳类“ Wall”的所有实例。

样本的第一部分:

walls = new ArrayList<>();

示例的第二部分:

wall = new Wall(x, y);
walls.add(wall);

此代码位于主类中

wall(Wall类)和wall(ArrayList)的实际变量位于主类的构造函数上方,因此可以在主类的多种方法中使用

在级别设置过程中,多次调用了此示例的底部两行。 Wall的每个实例都是正方形网格中的一个墙砖,它们共同构成了关卡图

如何在列表的所有实例中调用Wall类的方法(更改Wall-graphic)?

Wall类中的方法已完成并且可以工作。 但是我不知道如何为该ArrayList的所有成员调用它。

3 个答案:

答案 0 :(得分:1)

简单地为:

List<Walls> walls = new ArrayList<>();

...

Wall wall = new Wall(x, y);
walls.add(wall);

...
# Java <8 Flavour
for (Wall wall :  walls) {
   wall.yourMethod();
}

# Java > 8 Flavour:

walls.stream().forEach(w -> w.yourMethod()));

答案 1 :(得分:0)

  

Wall类中的方法已完成并且可以工作。但是我不知道如何为ArrayList的所有成员调用它。

您可以迭代列表的所有成员,并在每个成员上调用方法。有多种实现细节的方法。但是Java没有通过单个方法调用表达式针对多个对象调用方法的语法或意义。

但是,如果要避免对每个Wall进行单独的方法调用,请考虑插入一个间接级别。例如,创建一个TileSet类,其中包含许多或所有Wall实例应该共有的所有详细信息,并为每个Wall提供对同一TileSet对象的引用。然后,您只需修改一个Wall对象即可更新所有TileSet所依赖的数据。

答案 2 :(得分:-1)

我不再需要答案了。

for (int i = 0; i < walls.size(); i++)
            {
                Wall wall = walls.get(i);
                wall.changeWallIce();
            }

这就是我需要的。 现在我自己找到了。