Java Generics: incompreensão de captura de curinga
Lendo o tutorial on-line do Java Não entendi nada sobre a captura de curingas. Por exemplo:
import java.util.List;
public class WildcardError {
void foo(List<?> i) {
i.set(0, i.get(0));
}
}
Por que o compilador não pode manter a atribuição segura? Ele sabe que, ao executar, por exemplo, o método com uma Integer List, obtém do i.get um valor Integer. Portanto, tente definir um valor Integer no índice 0 para a mesma lista Integer (i). Então, o que há de errado? Por que escrever um ajudante Wildcard?