variable usar sirve que para metodos metodo inicializacion estática estaticos estatico definicion cuando clase bloque java scala static-block

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?