可能重複:
Most efficient way to cast List<SubClass> to List<BaseClass>
why polymorphism doesn't treat generic collections and plain arrays the same way?傳遞收集<SubClass>很快會收集<BaseClass>功能無法在Java中
如果我有一個抽象基類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>
一個子類。什麼是正確進行此調用的方法?
謝謝 - 雖然我找不到它,但我認爲這解決了一個不同的問題(更關注於「我該怎麼做」,更少關注「爲什麼數組不同於集合」)。這個假設適用於任何通用的,例如'WeakReference'。 –
PresumablY。 Dagnammit。 –