Possible Duplicate:
Most efficient way to cast List<SubClass> to List<BaseClass>
why polymorphism doesn't treat generic collections and plain arrays the same way?
如果我有一个抽象基类BaseClass
我写了一个函数期待 Collection<BaseClass>
作为其参数,使用 Collection<SubClass>
调用该函数一个类SubClass extends BaseClass
编译失败。
在基类中:
public void addLots(Collection<BaseClass> collection) {
for(BaseClass yourbase : collection) {
us.add(yourbase) //what you say!!
}
}
在子类中:
public void addMoreLots(Collection<SubClass> collection) {
addLots(collection); //FAILS TO COMPILE
}
现在我想我明白这是为什么了:Collection<SubClass>
不是 Collection<BaseClass>
的子类。进行此调用的正确方法是什么?
最佳答案
紧急情况下,Collections.unmodifiableCollection(Collection<SubClass>)
可以返回 Collection<BaseClass>
。 (当然,这使得集合不可修改,但这就是可以安全地将 Collection<SubClass>
视为 Collection<BaseClass>
的原因。)
关于java - 在 Java 中将 Collection<SubClass> 传递到期望 Collection<BaseClass> 的函数失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12251696/