【问题标题】:Child Class in Superclass Array in Java [duplicate]Java中超类数组中的子类[重复]
【发布时间】:2012-08-26 20:13:51
【问题描述】:

可能重复:
Is List<Dog> a subclass of List<Animal>? Why aren't Java's generics implicitly polymorphic?

我有这个代码:

ArrayList<A> objects = new ArrayList<A>();

objects.add(new B());

其中B 是一个子类o A。它给了我一个像这样的编译时错误:

ArrayList类型中的add(A)方法不适用于参数(B)

【问题讨论】:

  • @SLaks:在这种情况下真的不相关。为什么需要这些课程?
  • 忽略那个(我的)近距离投票。我把问题搞混了。
  • 我会更仔细地检查。我还找不到问题,但这之前效果很好
  • @WChargin 为什么不相关? OP 在 A B 关系方面存在一些问题。我们需要解决它,如果他给我们提供更多信息,这将是有帮助的。
  • 这无关紧要,因为您只需要知道哪个类扩展了哪个。结构的实现或其余部分对于多态性并不重要

标签: java casting arraylist


【解决方案1】:

这编译并运行良好:

import java.util.ArrayList;

class A {
}

class B extends A {
}

class Test {
    public static void main(String[] args) {
        ArrayList<A> arraylist = new ArrayList<A>();
        arraylist.add(new B());
    }
}

再看看你的代码。也许你把它弄反了,A 扩展了B

【讨论】:

  • 你的意思是A延伸B
  • @Cratylus 否,“BA 的子类”
  • @Jeffrey -- 应该就是这样。他的意思是可能原来的代码关系是错误的。
  • @david Ahh,我略过了那部分。哎呀
猜你喜欢
  • 2017-10-16
  • 2018-03-05
  • 2017-01-09
  • 1970-01-01
  • 1970-01-01
  • 2017-12-14
  • 2014-08-29
  • 1970-01-01
相关资源
最近更新 更多