Sobes.tech
Junior — Senior
48

Переписывание кода с учётом различий между List<? extends>, List<? super> и конкретным типом

Условие задачи

Необходимо изменить существующий код, учитывая следующие вопросы:

  • Чем отличаются списки list1, list2 и list3?
  • Какие элементы можно добавить в каждый из этих списков?
  • Какие типы объектов можно безопасно извлекать из них?
  • В каких ситуациях следует использовать ограничение extends, а в каких — super?
class A {}
class B extends A {}
class C extends B {}

List<? extends B> list1 = ...
List<? super B> list2 = ...
List<B> list3 = ...