我试图遍历多个不同类型的对象,这些对象都扩展了同一个父类。例如:
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/