我有两个类这样问题与泛型和<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) –