Выбор ответа Middle Дженерики и стирание спрашивают часто обновлено
PECS
Вопрос
Какая сигнатура метода, копирующего элементы из src в dst, самая гибкая?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: <T void copy(List<? super T dst, List<? extends T src). PECS: источник (producer) читается, поэтому extends, приёмник (consumer) принимает элементы, поэтому super.
Варианты ответа
<T> void copy(List<T> dst, List<T> src)<T> void copy(List<? extends T> dst, List<? super T> src)<T> void copy(List<? super T> dst, List<? extends T> src)правильный ответvoid copy(List<Object> dst, List<Object> src)
Разбор
PECS: источник (producer) читается, поэтому extends, приёмник (consumer) принимает элементы, поэтому super. Так можно скопировать List<Integer> в List<Number>. Вариант с List<T> требует одинаковых типов. Перевёрнутые wildcard не дадут ни читать из src как T, ни писать в dst. List<Object> не примет List<Integer> из-за инвариантности.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.