我正在使用抽象类型,我想知道为什么这是无效的:
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}
任何帮助都将不胜感激。
答案 0 :(得分:3)
当你这样说时:
class X {type T = A}
你说:T
完全 A
或T
是A
的别名。它不能是其他任何东西,包括A
的子类型。
你可能意味着这个:
class X {type T <: A}