我们可以使用具有 scala 特征的 new 关键字吗

Can we use new keyword with scala traits

我正在阅读所有内容,我们无法实例化该特征,但是当我运行这段代码时,它工作正常。我对 scala 特性感到困惑,有人可以解释一下吗。

trait X {
  def a: Int
  def b: String
}

object test {
  def main(args: Array[String]) {
    new X() {
      override def a: Int = 1

      override def b: String = "as"
    }
}

您实际做的是提供 X 一个 class 正文 { } 并创建一个匿名的 class 内联来扩展特征。 此外 - 该特征的所有成员都有一个具体的实现 - 这就是它起作用的原因。