Question

Qu'est-ce que Scala équivalent du bloc statique Java?

Était-ce utile?

La solution

code dans le constructeur (qui est, le corps) de l'objet compagnon est pas exactement le même code dans un bloc statique d'une initialiseur classe Java. Dans l'exemple ci-dessous, je crée une instance de A, mais l'initialisation ne se produit pas.

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

Pour déclencher la construction de l'objet compagnon lorsque la première instance de la classe est créée, vous pouvez y accéder à partir du constructeur de la classe.

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

Dans bien des cas, la différence ne serait pas question. Mais si vous lancez des missiles (ou d'autres effets secondaires), vous pourriez prendre soin!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top