【发布时间】:2011-01-27 01:13:58
【问题描述】:
我有两个特性,一个扩展另一个,每个都有一个内部类,一个扩展另一个,具有相同的名称:
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
}
如何在C 类的主体中访问A.X 类?重命名 B.X 而不隐藏 A.X 不是首选方式。
为了让事情有点复杂,在我遇到这个问题的情况下,特征具有类型参数(本示例中未显示)。
【问题讨论】:
标签: scala overriding hidden inner-classes