Я полагаю, что «аннотации вариации типов» ( +
и -
) не могут применяться к «членам типа». Чтобы объяснить это себе, я рассмотрел следующий пример
abstract class Box {type T; val element: T}
. Теперь, если я хочу создать класс StringBox
, мне нужно расширить Box
:
class StringBox extends Box { type T = String; override val element = ""}
Таким образом, я могу сказать, что Box
естественно ковариантен по типу T
. Другими словами, классы с членами типа ковариантны в этих типах.
Есть ли в этом смысл?
Как бы вы описали взаимосвязь между членами типа и вариацией типов?