如何为列中的所有实例调用方法?

问题描述 投票:0回答:3

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

样本的第一部分:

walls = new ArrayList<>();

样本的第二部分:

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

此代码位于主类中

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

在水平设置期间,此样本的底部两行被调用多次。 Wall的每个实例都是一个正方形网格中的一个墙砖,它们一起构成了水平图

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

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

java
3个回答
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()));

0
投票

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

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

但是如果你想避免为每个Wall单独调用方法,那么考虑插入一个间接层。例如,创建一个TileSet类,其中包含许多或所有Wall实例应该具有的所有细节,并为每个Wall提供对同一个TileSet对象的引用。然后,您可以通过仅修改一个Wall对象来更新所有TileSets所依赖的数据。


-1
投票

我不再需要答案了。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.