usar - ¿Cuál es el equivalente de Scala del bloque estático de Java?
public static java (1)
El código en el constructor (es decir, el cuerpo) del objeto compañero no es precisamente el mismo que el código en un bloque de inicializador estático de una clase Java. En el siguiente ejemplo, creo una instancia de A, pero la inicialización no se produce.
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
Para desencadenar la construcción del objeto complementario cuando se crea la primera instancia de la clase, puede acceder al mismo desde el constructor de la clase.
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
En muchas circunstancias, la diferencia no importaría. Pero si está lanzando misiles (u otros efectos secundarios), ¡podría importarle!
¿Cuál es el equivalente de Scala del bloque estático de Java?