Q. почему первый из них не работает, но второй работает нормально.?Java Generic (Список <T> list1) VS (List <? Super SuperClass> list2)
1
public List<? extends Animal> doAdd(List<? extends Animal> list) {
//here unable to add, compilation error
list.add(new Cat());
return list;
}
2
private static <T> List<T> doAdd(List<T> list){
//working fine.
ls.add((T) new Cat());
return ls;
}
List<Animal> list = new ArrayList<Aninal>();
doAdd(list);
во втором случае он позволяет добавлять, но все равно нужно использовать/использовать переменную ref класса super во время извлечения. так почему бы не в первом случае разрешить add()? – user13090
@ user13090 '? extends Type' не позволяет добавлять ничего, кроме 'null', с'? Тип типа Type type будет 'Object' – Ramanlfc