我如何从 arrayList 中的不同对象调用方法?

How do i call methods from different objects in an arrayList?

我正在为我的课程创建一个简单的游戏。我有一个数组列表,其中包含由我创建的不同 classes 制成的不同类型的敌人。所有对象都有一个名为 drawEnemy 的方法,它将对象绘制到屏幕上(因此函数 drawEnemy() 在每个 class 中)。我试图在绘制循环中绘制数组中的所有对象。

ArrayList<Object> enemies;

enemies.add(new enemy1())
enemies.add(new enemy2())
enemies.add(new enemy3())

void draw(){
    for(Object i : enemies)
      i.drawEnemy();
}

这告诉我 drawEnemy 函数不存在。

您已将 enemies 定义为 ArrayList<Object>,这意味着对其进行迭代将 return Object 引用(无论实际运行时类型如何)。

如果你想遍历这样的敌人列表,你应该为所有敌人class提取一个公共接口或基础class,并将其用于列表类型:

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();
}