Estoy refabricando un código heredado, pero me quedé perplejo por la decisión de diseño y no puedo encontrar los términos adecuados para google esto. Mi predecesor usaría bloques como este:En Java, ¿por qué tener un bloque de código sin palabras clave, solo llaves
public class ChildClass extends ParentClass {
{
inheritedVar = "someVal";
}
public ChildClass(){ /* constructor exists */ }
// rest of code
}
¿Cuál es el punto de declarar un bloque de código sin palabra clave? No se comporta como un bloque estático, no lo creo. ¿Es una alternativa para establecer en el constructor? ¿Esto tendría algún efecto si se usara una fábrica (que en este caso no es así)? Encontré un hilo relacionado aquí en this happening in C pero el razonamiento (scope & declaración de variable) no parecía relevante para Java.
Cualquier pensamiento o idea sobre el "por qué" de esto sería apreciado. Es bastante fácil volver a factorizar esto, solo tengo curiosidad en este punto.
+1 para indicar el uso correcto de este bloque. – birryree
+1: Acepto los métodos de inicialización nombrados. Sin embargo, dado que solo hay un constructor, el objetivo de este bloque en mi base de código parece bastante inútil. – Riggy
@Riggy, sin duda es redundante. – Mike