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

Что означает out T

Вопрос

Что означает объявление interface Source<out T>?

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

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

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

Коротко

Правильный ответ: T только на выходе, и Source<String подтип Source<Any. out делает тип ковариантным: класс только производит значения T, поэтому подтипизация сохраняется.

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

  1. T только на выходе, и Source<String> подтип Source<Any>правильный ответ
  2. T можно использовать только в параметрах методов
  3. T может быть только nullable-типом
  4. T стирается и недоступен внутри интерфейса

Разбор

out делает тип ковариантным: класс только производит значения T, поэтому подтипизация сохраняется. Компилятор запретит использовать T в позиции параметра. Параметры это как раз позиция in. Nullable и стирание к out отношения не имеют.

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

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