Scala Initialisierungsverhalten
Bitte schauen Sie sich den folgenden Code an.
trait MyTrait { val myVal : String }
class MyClass extends MyTrait { val myVal = "Value" }
class MyClass2(val myVal: String) extends MyTrait
Warum unterscheidet sich die Initialisierungsreihenfolge beiMyClass
undMyClass2
? Der Konstruktor vonMyClass
wird als
MyClass() {
MyTrait$class.$init$(this);
myVal = value
}
Der Konstruktor vonMyClass2
wird sei
MyClass2(String myVal) { this.myVal = myVal; MyTrait$class.$init$(this) }
Ich denke, die Initialisierungsreihenfolge sollte wie folgt lauten:MyClass2
er Konstruktor von @ funktioniert in beiden Fällen gleich.