我有一个班级Sprites和一个班级Soldier,Tank等等。Soldier并Tank扩展Sprites。现在子类有一个特殊的update()方法,每个类都不同(比如不同的动作等等)。
我有一个List<Sprites> ListUnits1Player1存储所有例如士兵对象的位置,还有一个存储List<Sprites> ListUnits2Player1所有坦克对象的位置。这些列表属于<Sprites>. 现在请看以下代码:
for(Iterator<Sprites> itr_unit1_player1 = ListUnits1Player1.iterator();itr_unit1_player1.hasNext();) {
Sprites unit1_player1 = itr_unit1_player1.next();
unit1_player1.update();
}
我收到错误无法解决方法update()。
然而,调试器告诉我, unit1_player1 是 type Soldier,这是正确的,因为我将对象存储Soldier在 List 中ListUnits1Player1。
但是为什么我不能调用update()Soldier 类的方法呢?
我想我可以明确地unit1_player1转换为Soldierwith((Soldier)unit1_player1).update();但由于它是可变的,存储在哪个单位(士兵、坦克、...)中,ListUnits1Player1我不想将它转换为某种类型。
我试过铸造:
unitClass = unit1_player1.getClass();
((unitClass)unit1_player1).update();
总是得到正确的课程,但这只是给了我错误Unknown class 'unitClass'
有什么建议么?