小编Dmi*_*try的帖子

Scala初始化行为

请查看以下代码.

trait MyTrait { val myVal : String }

class MyClass extends MyTrait { val myVal = "Value" }

class MyClass2(val myVal: String) extends MyTrait 
Run Code Online (Sandbox Code Playgroud)

为什么初始化顺序在MyClassMyClass2?的情况下有所不同?构造函数MyClass将为

MyClass() {
  MyTrait$class.$init$(this);
  myVal = value
}
Run Code Online (Sandbox Code Playgroud)

构造函数MyClass2将是

MyClass2(String myVal) { this.myVal = myVal; MyTrait$class.$init$(this) }
Run Code Online (Sandbox Code Playgroud)

我认为初始化顺序应该像MyClass2构造函数那样,两种情况都是一样的.

scala initialization traits

15
推荐指数
1
解决办法
3402
查看次数

标签 统计

initialization ×1

scala ×1

traits ×1