鉴于Outer
类及其Inner
类的抽象定义,我想实例化trait 中Inner1
定义的具体类。Outer1
abstract class Outer {
type Inner_Tp <: Inner;
abstract class Inner {
self: Inner_Tp =>
}
}
trait Outer1 {
self: Outer =>
protected class Inner1 extends Inner {
self: Inner_Tp =>
}
def Inner1() = new Inner1()
}
Scala 编译器过早终止编译,给我以下错误消息:“错误:无法实例化类 Inner1,因为它不符合其自身类型 Outer1.this.Inner1 和 Outer1.this.Inner_Tp”。为什么?
毕竟Inner1
类是在一个抽象上下文中定义的,这是它的Outer1
特征。我想推迟 的定义,type Inner_Tp
直到特征混入某个具体的类。