gpt4 book ai didi

java - 如何从List访问子类对象的方法

转载 作者:行者123 更新时间:2023-12-01 17:49:32 24 4
gpt4 key购买 nike

我有课Sprites和一个类Soldier , Tank等等。 SoldierTank延伸Sprites 。现在子类有一个特殊的update()每个类(class)的方法都不同(例如不同的 Action 等)。

我有一个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 的类型为 Soldier ,这是正确的,因为我存储了 Soldier 的对象在列表中ListUnits1Player1

但是为什么我不能调用方法 update()士兵类(Class)?

我想我可以明确地转换 unit1_player1Soldier((Soldier)unit1_player1).update();但由于它是可变的,哪个单位(士兵,坦克,...)存储在 ListUnits1Player1 中我不想将其转换为某种类型。

我尝试过使用以下方式进行转换:

unitClass = unit1_player1.getClass();
((unitClass)unit1_player1).update();

始终获得正确的类,但这只会给我错误 Unknown class 'unitClass'

有什么建议吗?

最佳答案

您可以将父类 Sprites 中的方法 update 作为抽象方法移动。

子类必须重写该方法,并且 unit1_player1.update(); 无需任何转换即可工作。

关于java - 如何从List访问子类对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51917192/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com