質問

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

多くの状況では、違いは重要ではないだろう。あなたはミサイル(またはその他の副作用)を起動している場合でも、あなたが気にあります!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top