Java Generics: nieporozumienie dotyczące przechwytywania symboli wieloznacznych

Czytanie samouczka w języku Java Nie rozumiem nic o przechwytywaniu symboli wieloznacznych. Na przykład:

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

dlaczego kompilator nie może zachować przypisania bezpiecznego? Wie, że wykonując na przykład metodę z listą całkowitą, pobiera z i.get wartość całkowitą. Próbuje więc ustawić wartość całkowitą w indeksie 0 na tę samą listę całkowitą (i). Więc co jest nie tak, dlaczego warto pisać pomocnik Wildcard?

questionAnswers(5)

yourAnswerToTheQuestion