Java继承,遍历每个子类

标签 java class inheritance

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

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/

相关文章:

ruby - `Module#singleton_class` 的倒数

java - 为什么我的静态变量在 main 方法中不可用?

javascript - 访问React类组件的返回变量

python - 在 Python 中调用父类中的子方法

inheritance - Rust 继承 : call parent method

c++ - 奇怪的代码...有人可以解释一下吗

php - 了解 PHP 中的类

java - Jackson JSON 字段映射大小写?

java - 在 Java 中读取包含 JSON 数据的文本文件

java - 向 J2SE 应用程序添加插件支持的最佳技术?