如何实例化使用构造函数扩展类的特征

ka4*_*eli 16 scala

有代码:

class A(name:String)
trait E extends A

new E{}  //compile error
Run Code Online (Sandbox Code Playgroud)

这样的继承可能吗?试图在匿名类的体内创建val或def,没有用.

Yur*_*riy 14

几种可能的解决方案:

1)在A类构造函数中设置name的默认值:

class A(name : String = "name")
trait E extends A
new E {} // {} is obligatory. trait E is abstract and cannot be instantiated`
Run Code Online (Sandbox Code Playgroud)

2)将特质E混合到A的实例:

object inst extends A("name") with E
// or:
new A("name") with E
Run Code Online (Sandbox Code Playgroud)