¿Cuál es Scala equivalente de bloque estático de Java?
-
23-09-2019 - |
Pregunta
¿Cuál es Scala equivalente de bloque estático de Java?
Solución
Código en el constructor (es decir, el cuerpo) del objeto compañero es no precisamente el mismo que el código de forma estática initialiser de bloques de una clase Java. En el siguiente ejemplo, se crea 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 la construcción de disparo del objeto acompañante cuando se crea la primera instancia de la clase, se podría acceder a él 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 usted está lanzando misiles (u otros efectos secundarios), es posible que cuidar!
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow