Javaの静的ブロックのScalaの同等とは何ですか?
-
23-09-2019 - |
質問
Javaの静的ブロックのScalaの同等とは何ですか?
解決
コンパニオン・オブジェクトの(体である)コンストラクタに
コードは、Javaクラスのブロック初期化剤静的にコードと正確に同じのしないのです。以下の例では、IはAのインスタンスを作成したが、初期化が発生しない。
scala> object Test { class A; object A { println("A.init") }}
defined module Test
scala> new Test.A
res3: Test.A = Test$A@3b48a8e6
scala> Test.A
A.init
res4: Test.A.type = Test$A$@6e453dd5
クラスの最初のインスタンスが作成されたときにコンパニオンオブジェクトのトリガー構築するには、クラスのコンストラクタから、それをアクセスすることができました。
scala> object Test { class A { A }; object A { println("A.init") }}
defined module Test
scala> new Test.A
A.init
res5: Test.A = Test$A@4e94a28e
scala> new Test.A
res6: Test.A = Test$A@30227d4e
多くの状況では、違いは重要ではないだろう。あなたはミサイル(またはその他の副作用)を起動している場合でも、あなたが気にあります!
所属していません StackOverflow