【发布时间】:2013-08-06 10:48:42
【问题描述】:
考虑以下几点:
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 实现的情况下直接执行此操作?
trait TestTraitImpl extends TestTrait {
def doStuff() {
println("doing stuff")
}
}
val t = new TestClass with TestTraitImpl
【问题讨论】:
-
我很困惑:问题说“以下有效”,但它不起作用(即使 OP 的回答也说它不起作用)。
标签: scala