Выбор ответа Junior Дженерики и стирание спрашивают часто обновлено

Добавление в List<? extends Number>

Вопрос

Что можно сделать со списком List<? extends Number> list?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Читать как Number, а добавить можно только null. ? extends Number означает «список какого-то конкретного подтипа Number».

Варианты ответа

  1. Добавлять любые Number и читать элементы как Number
  2. Читать как Number, а добавить можно только nullправильный ответ
  3. Добавлять Integer, а читать элементы только как Object
  4. Ни читать, ни добавлять: такой список можно только передать

Разбор

? extends Number означает «список какого-то конкретного подтипа Number». Любой элемент точно Number, поэтому чтение безопасно. Но компилятор не знает, List<Integer> это или List<Double>, поэтому добавить нельзя ничего, кроме null. Добавлять Integer и читать как Object позволяет ? super Integer.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.