Chamando um método Java sem nome
Eu estou olhando o código abaixo e encontrei algo um pouco estranho:
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 ");
}
}
Eu esperava que isso desse um erro de compilaçãoSystem.out
com "y" não pertence a uma declaração de método apenas um{ }
. Por que isso é válido? Não vejo como esse código seria ou deveria ser chamado.
Ao executar isso, produzx y c g
também, por que ostatic { }
ser chamado antes do construtor da sequência?