为什么这个Scala无效?

时间:2014-07-28 19:31:22

标签: scala inheritance polymorphism abstract-type

我正在使用抽象类型,我想知道为什么这是无效的:

class A {}
class B extends A {}

class X {type T = A}
class Y extends X {override type T = B}

看作B<:A,为什么我不能将B分配给T?

我收到此错误:

overriding type T in class X, which equals A;
 type T has incompatible type
class Y extends X {override type T = B}

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:3)

当你这样说时:

class X {type T = A}

你说:T 完全 ATA的别名。它不能是其他任何东西,包括A的子类型。

你可能意味着这个:

class X {type T <: A}