gpt4 book ai didi

java - 使用抽象类的ArrayList

转载 作者:行者123 更新时间:2023-12-01 18:29:33 26 4
gpt4 key购买 nike

我有一个抽象类C0。我还有其他几个继承自 C0 的类。它们重写抽象方法并拥有自己的特殊方法。

我想创建一个包含所有这些专用类的 ArrayList。

这是一段代码,展示了我(想要)如何做到这一点:

ArrayList<C0> A = new ArrayList<>();
A.add(new C1() );
A.add(new C2() );

A.get(x).method_of_C0(); // Works because my classes extend C0.
A.get(0).method_of_C1(); // Does not work
A.get(1).method_of_C2(); // Does not work

我希望能够通过这个ArrayList调用C1和C2自己的方法。这可能吗?我尝试通过手动转换进行一些调整,但没有成功。

最佳答案

您要么需要保留 C1 和 C2 实例的单独 ArrayList,要么必须将它们转换为各自的类型才能使用子类型的方法。像这样的东西:

A.get(x).method_of_C0();
((C1)A.get(0)).method_of_C1();
((C2)A.get(1)).method_of_C2();

在进行转换之前,您还可以使用 instanceof 关键字来检查元素是否实际上是特定子类型的实例,否则您将得到 ClassCastException。

但请注意,这有一个非常糟糕的代码味道,因此在需要时跟踪每个子类型可能是正确的方法。

关于java - 使用抽象类的ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24891390/

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