24
什麼是Java的靜態塊的Scala等價物?什麼是Java的靜態塊的Scala等價物?
什麼是Java的靜態塊的Scala等價物?什麼是Java的靜態塊的Scala等價物?
伴隨對象的構造函數(即body)中的代碼是而不是,它與Java類的靜態初始化塊中的代碼完全相同。在下面的例子中,我創建了A的一個實例,但不會發生初始化。
scala> object Test { class A; object A { println("A.init") }}
defined module Test
scala> new Test.A
res3: Test.A = [email protected]
scala> Test.A
A.init
res4: Test.A.type = [email protected]
要在創建類的第一個實例時觸發構建伴隨對象,可以從類構造函數中訪問它。
scala> object Test { class A { A }; object A { println("A.init") }}
defined module Test
scala> new Test.A
A.init
res5: Test.A = [email protected]
scala> new Test.A
res6: Test.A = [email protected]7d4e
在許多情況下,差異無關緊要。但是如果你發射導彈(或其他副作用),你可能會關心!