Учитывая этот пример из учебника по обобщениям.
List<String> list = new ArrayList<>();
list.add("A");
// The following statement should fail since addAll expects
// Collection<? extends String>
list.addAll(new ArrayList<>());
Почему последняя строка не компилируется, когда кажется, что она должна компилироваться. Первая строка использует очень похожую конструкцию и компилируется без проблем.
Пожалуйста, объясните подробно.