Qu'est-ce que Scala équivalent du bloc statique de Java?
-
23-09-2019 - |
Question
Qu'est-ce que Scala équivalent du bloc statique Java?
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