【问题标题】:Why is this invalid Scala?为什么这是无效的 Scala?
【发布时间】:2014-07-29 03:50:25
【问题描述】:

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

class A {}
class B extends A {}

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

作为B <: a>

我得到这个错误:

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

任何帮助将不胜感激。

【问题讨论】:

标签: scala inheritance polymorphism abstract-type


【解决方案1】:

当你这样说时:

class X {type T = A}

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

你可能是这个意思:

class X {type T <: A}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-13
  • 1970-01-01
  • 2016-07-27
相关资源
最近更新 更多