Java Generics: malentendido de captura de comodín

Leer el tutorial en línea de Java No he entendido nada sobre la captura de comodines. Por ejemplo:

    import java.util.List;
    public class WildcardError {
     void foo(List<?> i) {
      i.set(0, i.get(0));
     }
    }

¿Por qué el compilador no puede mantener la asignación segura? Sabe que, al ejecutar, por ejemplo, el método con una lista de enteros, obtiene de i.get un valor de entero. Por lo tanto, intente establecer un valor Integer en el índice 0 en la misma lista de Enteros (i). Entonces, ¿qué pasa? ¿Por qué escribir comodín comodín?

Respuestas a la pregunta(5)

Su respuesta a la pregunta