Was ist Scala Äquivalent von Java statische Block?
-
23-09-2019 - |
Frage
Was ist Scala Äquivalent von Java statische Block?
Lösung
-Code im Konstruktor (das heißt, der Körper) des Begleitobjekts ist nicht genau die gleiche wie Code in einem statischen initialiser Block einer Java-Klasse. Im Beispiel unten, erstelle ich eine Instanz von A, aber die Initialisierung nicht auf.
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
Um Trigger Aufbau des Begleitobjekts, wenn die erste Instanz der Klasse erstellt wird, können Sie es aus der Klasse Konstruktor zugreifen.
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
In vielen Fällen wäre der Unterschied keine Rolle. Aber wenn Sie starten Raketen (oder andere Nebenwirkungen), könnten Sie interessieren!
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow