考虑以下:
trait TestTrait {
def doStuff()
}
final class TestClass {
// ...
}
我想实例化一个实现特征中方法的 TestClass 实例。以下不编译:
// Illegal inheritance from final class TestClass
val t = new TestClass with TestTrait {
def doStuff() {
println("doing stuff")
}
}
这是有道理的,因为创建的匿名类将扩展最终类。我真正想要的是一个匿名的特性实现,它混入最终类的实例中。
以下工作,但似乎有点迂回。有没有办法在没有声明的特征实现的情况下直接做到这一点?
trait TestTraitImpl extends TestTrait {
def doStuff() {
println("doing stuff")
}
}
val t = new TestClass with TestTraitImpl