gpt4 book ai didi

Java继承,遍历每个子类

转载 作者:行者123 更新时间:2023-11-29 06:53:36 29 4
gpt4 key购买 nike

我试图遍历多个不同类型的对象,这些对象都扩展了同一个父类。例如:

ArrayList<Enchant> enchants = new ArrayList<>();

enchants 数组内部是扩展 Enchant 类的类的对象。

例如:

public class JumpBoost extends Enchant{
public static Item generateItem(){
return something;
}
}

附魔 ArrayList 中的每个对象都有一个名为 generateItem() 的方法。

我想通过它循环使用:

for(Enchant enchant : enchants){
enchant.generateItem()
}

我已经尝试过这样做,但由于 Enchant 类没有 generateItem() 方法,所以没有成功。

我基本上只需要一种方法来对多个不同类型的对象进行分组和循环。

最佳答案

惯用的方法是在 Enchant 上定义一个抽象的 generateItem()。如果由于某种原因你不能修改 Enchant,你可以创建一个 Enchant 的抽象子类,并让你的所有子类继承自它。

您还可以尝试使用 generateItem() 创建一个接口(interface),所有子类都实现该接口(interface)并将接口(interface)类型存储在 ArrayList 中。

如果您出于某种原因仍然不能执行其中任何一项,则您应该重新考虑您的设计。但作为最后的手段,您可以使用反射来动态访问每个子类的 generateItem。只需调用 .getClass(),然后查找方法并调用它。

关于Java继承,遍历每个子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39940049/

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