Estoy mirando el código a continuación y encontré algo un poco extraño:
public class Sequence {
Sequence() {
System.out.print("c ");
}
{
System.out.print("y ");
}
public static void main(String[] args) {
new Sequence().go();
}
void go() {
System.out.print("g ");
}
static {
System.out.print("x ");
}
}
Hubiera esperado que esto diera un error de compilación ya que System.out
con "y" no pertenece a una declaración de método solo a { }
. ¿Por qué es esto válido? No veo cómo se llamaría o debería llamarse este código.
Al ejecutar esto, x y c g
también produce , ¿por qué static { }
se llama antes del constructor de secuencia?