Выбор ответа Senior Дженерики и вариантность обновлено
Star projection List<*>
Вопрос
Что можно делать со значением типа MutableList<*>?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Читать элементы как Any?, добавлять ничего нельзя. означает неизвестный конкретный тип.
Варианты ответа
- Читать элементы как
Any?, добавлять ничего нельзяправильный ответ - Читать элементы как
Any?, но не добавлять ничего, кромеnull - Добавлять любые элементы, читать нельзя
- Ничего: со star projection нельзя работать
Разбор
* означает неизвестный конкретный тип. Читать безопасно как Any?, потому что любой тип подтип Any?. Записывать нельзя ничего: мы не знаем, какой тип ожидается, и даже null не подходит, потому что список может быть MutableList<String> с non-null элементами. Удалять по индексу или очищать при этом можно: эти методы не принимают T.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Дженерики и вариантность»
- Проверка is List<String> и стирание типов
- Вариантность в объявлении и в месте использования
- Как обойти стирание типов
- Инвариантность, out и in
- Контравариантность in T
- Конфликт перегрузок из-за стирания
- Почему List<String> можно передать как List<Any>
- Дженерики Kotlin и Java