Выбор ответа Senior Дженерики и вариантность обновлено

Star projection List<*>

Вопрос

Что можно делать со значением типа MutableList<*>?

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

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

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

Коротко

Правильный ответ: Читать элементы как Any?, добавлять ничего нельзя. означает неизвестный конкретный тип.

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

  1. Читать элементы как Any?, добавлять ничего нельзяправильный ответ
  2. Читать элементы как Any?, но не добавлять ничего, кроме null
  3. Добавлять любые элементы, читать нельзя
  4. Ничего: со star projection нельзя работать

Разбор

* означает неизвестный конкретный тип. Читать безопасно как Any?, потому что любой тип подтип Any?. Записывать нельзя ничего: мы не знаем, какой тип ожидается, и даже null не подходит, потому что список может быть MutableList<String> с non-null элементами. Удалять по индексу или очищать при этом можно: эти методы не принимают T.

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

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