我有兩個類這樣問題與泛型和<E擴展...>
public class Wire<E extends Electricity> implements Connection<E> {
private ArrayList<Inlet<E>> outlets = new ArrayList<Inlet<E>>();
public void outputToAll() {
for (Inlet<E> inlet : outlets){
inlet.addToStore(new Electricity(amountPer));
}
}
}
和
public abstract class Inlet<E> {
private E store;
public void addToStore(E inputObj){
this.store.add(inputObj);
}
}
入口沒有任何錯誤,但電線給我的錯誤
在類型的方法addToStore(E)入口是不適用的參數(電力)
但是,由於在outputToAll中E必須擴展電力,所以Inlet至少是Inlet,爲什麼將一個Electricity對象傳遞給addToStore不起作用?
如果編譯器不夠聰明,無法知道這會起作用,什麼是一個好的解決方法?
好吧,它不能總是工作。你在說'進口'是一個'入口','E延伸電力'。但是當「E」可能不同時(「電力」的一個子類),你試圖給它一個「電力」。 –
Tunaki
可能的重複[Is List List 的子類?爲什麼不是Java的泛型隱含多態?](http://stackoverflow.com/questions/2745265/is-listdog-a-subclass-of-listanimal-why-arent-javas-generics-implicitly-p) –