Выбор ответа Middle Дженерики и вариантность спрашивают часто обновлено
Что означает out T
Вопрос
Что означает объявление interface Source<out T>?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: T только на выходе, и Source<String подтип Source<Any. out делает тип ковариантным: класс только производит значения T, поэтому подтипизация сохраняется.
Варианты ответа
Tтолько на выходе, иSource<String>подтипSource<Any>правильный ответTможно использовать только в параметрах методовTможет быть только nullable-типомTстирается и недоступен внутри интерфейса
Разбор
out делает тип ковариантным: класс только производит значения T, поэтому подтипизация сохраняется. Компилятор запретит использовать T в позиции параметра. Параметры это как раз позиция in. Nullable и стирание к out отношения не имеют.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Дженерики и вариантность»
- Проверка is List<String> и стирание типов
- Вариантность в объявлении и в месте использования
- Как обойти стирание типов
- Инвариантность, out и in
- Контравариантность in T
- Конфликт перегрузок из-за стирания
- Почему List<String> можно передать как List<Any>
- Дженерики Kotlin и Java