我试图遍历所有扩展相同父类的不同类型的多个对象。例如:
ArrayList<Enchant> enchants = new ArrayList<>();
附魔数组的内部将是扩展
Enchant
类的类的对象。例如:
public class JumpBoost extends Enchant{
public static Item generateItem(){
return something;
}
}
附魔ArrayList中的每个对象都有一个称为generateItem()的方法。
我想循环使用:
for(Enchant enchant : enchants){
enchant.generateItem()
}
我已经尝试过这样做,但是由于Enchant类没有
generateItem()
方法而没有运气。我本质上只需要一种分组和遍历不同类型的多个对象的方法。
最佳答案
您可以使用多态来解决该问题。
首先使用generateItem()方法定义基类/抽象类/接口,派生指定的类并重写/实现generateItem()方法。
这是带有接口的实现:
interface Base{
void generateItem();
}
class Derived1 implements Base{
@Override
public void generateItem() {
System.out.println("generateItem() from Derived1");
}
}
class Derived2 implements Base{
@Override
public void generateItem() {
System.out.println("generateItem() from Derived2");
}
}
class Main {
public static void main(String[] args) {
List<Base> list = new ArrayList<>();
list.add(new Derived1());
list.add(new Derived2());
list.forEach(Base::generateItem);
}
}
输出为:
generateItem() from Derived1
generateItem() from Derived2
有关更多信息,您可以阅读有关多态性here的信息。
关于java - Java继承,遍历每个子类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39940049/