Java Generics: недопонимание захвата подстановочных знаков

Читая онлайн-учебник по Java, я ничего не понимаю о захвате с подстановочными знаками. Например:

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

почему компилятор не может сохранить присваивание безопасным? Он знает, что, выполняя, например, метод со списком целых чисел, он получает из i.get значение целого числа. Поэтому попытайтесь установить значение Integer с индексом 0 в тот же список Integer (i). Итак, что же не так? Зачем писать помощник Wildcard?

Ответы на вопрос(5)

Ваш ответ на вопрос