我在为我的课程设计一个简单的游戏。我有一个数组列表,包含来自我创建的不同类的不同类型的敌人。所有对象都有一个名为drawEnemy的方法,它将对象绘制到屏幕(因此函数drawEnemy()在每个类中)。我正在试图绘制绘制循环中数组中的所有对象。
ArrayList<Object> enemies;
enemies.add(new enemy1())
enemies.add(new enemy2())
enemies.add(new enemy3())
void draw(){
for(Object i : enemies)
i.drawEnemy();
}这告诉我,函数drawEnemy不存在。
发布于 2020-01-01 19:35:46
您已经将enemies定义为ArrayList<Object>,这意味着迭代它将返回Object引用(不管实际运行时类型如何)。
如果您想迭代这样的敌人列表,则应该提取所有敌人类的公共接口或基类,并将其用于列表类型:
public interface Enemy {
void drawEnemy();
}
public class Enemy1 implements Enemy {
// code...
}
public class Enemy2 implements Enemy {
// code...
}
public class Enemy3 implements Enemy {
// code...
}
ArrayList<Enemy> enemies;
// list is then initialized and populated as it was
void draw() {
for (Enemy i : enemies) // Note the i is defined as an Enemy
i.drawEnemy();
}https://stackoverflow.com/questions/59555483
复制相似问题