Карточка Middle Дженерики и вариантность обновлено

Инвариантность, out и in

Вопрос

Объясни на примере Box<T>, Box<out T>, Box<in T>.

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

Ответьте про себя или вслух, потом откройте ответ и сверьтесь.

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

Коротко

Инвариантный Box<T: Box<String и Box<Any не связаны. Box<out T (производитель, только возвращает T): Box<String подтип Box<Any, как List.

Ответ

Инвариантный Box<T>: Box<String> и Box<Any> не связаны. Box<out T> (производитель, только возвращает T): Box<String> подтип Box<Any>, как List. Box<in T> (потребитель, только принимает T): Box<Any> подтип Box<String>, как Comparator.

Разбор

Инвариантный Box<T>: Box<String> и Box<Any> не связаны. Box<out T> (производитель, только возвращает T): Box<String> подтип Box<Any>, как List. Box<in T> (потребитель, только принимает T): Box<Any> подтип Box<String>, как Comparator.

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

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