Questo codice:Perché la nuova Base() non può essere passata a <? estende Base>?
public class Base<E> {
static void main(String[] args) {
Base<? extends Base> compound = new Base<Base>();
compound.method(new Base());
} //^error
void method(E e) { }
}
Dà tale errore di compilazione:
Error:(4, 17) java: method method in class Base<E> cannot be applied to given types;
required: capture#1 of ? extends Base
found: Base
reason: actual argument Base cannot be converted to capture#1 of ? extends Base by method invocation conversion
Da quello che ho capito, E
diventa ? extends Base
, qualcosa che si estende Base
. Quindi, perché non è possibile passare a new Base()
?
Con '' prima di metodo di qualsiasi oggetto può essere passato :) Ma, la mia domanda non è come farlo compilare. Sto chiedendo gentilmente una spiegazione del perché non compila :) –