讓我們有這樣的簡化代碼:類型成員的多壓倒一切
class Base {
self =>
type Actual <: Base {type Actual = self.Actual}
def me: Actual = this.asInstanceOf[Actual]
}
class A extends Base {
override type Actual = A
}
class B extends A {
override type Actual = B
}
println((new B).me)
我想me
始終有一個正確的返回類型(流利的接口)。不幸的是這個代碼與崩潰:
test.scala:13: error: overriding type Actual in class A, which equals this.A;
type Actual has incompatible type
override type Actual = B
^
one error found
如何實現期望的行爲,爲什麼它崩潰的第二種類型的成員覆蓋?
你可以使用'self.type',而不是定義一個類型成員 –