Меня смущает общий подтипирование.
В Java, если тип A
является подтипом B
, общий тип C<A>
и C<B>
являются инвариантными. Например, ArrayList<Base>
не является подтипом ArrayList<Derived>
.
Однако в Scala общий тип C<A>
и C<B>
являются ковариантными, если тип A
является подтипом B
. Итак, что свойство универсального класса в Scala имеет, но не в Java?