В чем причина такого присвоения?Каково практическое применение задания с использованием шаблона?
List<? extends Fruit> flist = new ArrayList<Apple>();
// flist.add(new Apple());
// flist.add(new Fruit());
// flist.add(new Object());
После того, как мы «вентиляционный» контейнер Apple, в контейнере с фруктами, мы не можем добавить что-нибудь в нем.
Я знаю, что мы могли бы сделать что-то вроде:
List<Apple> basket = new ArrayList<Apple>();
//Fill the basket with tons of juicy apples
List<? extends Fruit> fruitContainer = basket;
И тогда мы могли бы быть в состоянии использовать интерфейс Fruit использовать элементы, принадлежащие fruitContainer
. Но что может быть практической причиной сделать что-то подобное, если мы не сможем добавить что-нибудь позже?
List<? extends Fruit> flist = new ArrayList<Apple>();
Вопрос в следующем: зачем программисту делать что-то подобное? Можете ли вы найти реалистичный сценарий? :) – acejazz
@acejazz: Мое первое предложение охватывает это: я не думаю, что есть какая-то практическая причина для этого (если, как я уже сказал, вам фактически не нужно ничего добавлять в список). –