Члены типа и ковариация

Я полагаю, что «аннотации вариации типов» ( + и - ) не могут применяться к «членам типа». Чтобы объяснить это себе, я рассмотрел следующий пример

abstract class Box {type T; val element: T}

. Теперь, если я хочу создать класс StringBox , мне нужно расширить Box :

class StringBox extends Box { type T = String; override val element = ""}

Таким образом, я могу сказать, что Box естественно ковариантен по типу T . Другими словами, классы с членами типа ковариантны в этих типах.

Есть ли в этом смысл?
Как бы вы описали взаимосвязь между членами типа и вариацией типов?

11
задан Michael 18 March 2011 в 14:09
поделиться