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