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 = ...