我无法理解为什么在此代码中出现语法错误:
" T.scala"文件:
trait T
" A.scala"文件:
class A
object A {
def apply() = new A()
}
" other.scala"文件:
val a = new A() with T // ok
val b = A() with T // syntax error ';' or newline expected
我是否可以在不使用new
关键字的情况下继承而创建新的类实例?
我没有发现任何相关信息。
答案 0 :(得分:6)
A()
转换为A.apply()
,这是一种返回新对象的方法,与new A()
不同。
你实际上是在尝试这样做(这是行不通的):
val b = A.apply()
val c = b with T
您无法在已创建的对象上使用with
。