可能重复:
将 List<SubClass> 转换为 List<BaseClass> 的最有效方法
为什么多态性不会以相同的方式处理泛型集合和普通数组?
如果我有一个抽象基类BaseClass
并且我编写了一个期望作为其参数的函数,那么使用类的 aCollection<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>
. 进行此调用的正确方法是什么?