我有两个特征,一个扩展另一个,每个都有一个内部类,一个扩展另一个,具有相同的名称:
trait A {
class X {
def x() = doSomething()
}
}
trait B extends A {
class X extends super.X {
override def x() = doSomethingElse()
}
}
class C extends B {
val x = new X() // here B.X is instantiated
val y = new A.X() // does not compile
val z = new A.this.X() // does not compile
}
如何访问A.X
班级正文中的C
班级?重命名B.X
不隐藏A.X
不是首选方式。
为了让事情变得有点复杂,在我遇到这个问题的情况下,特征具有类型参数(本示例中未显示)。