我如何从 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();
}
我正在为我的课程创建一个简单的游戏。我有一个数组列表,其中包含由我创建的不同 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();
}