Je regarde le code ci-dessous et j'ai trouvé quelque chose d'un peu étrange :
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 ");
}
}
Je m'attendais à ce que cela donne une erreur de compilation, car le fichier System.out
avec "y" n'appartient pas à une déclaration de méthode, juste une { }
. Pourquoi cela est-il valable ? Je ne vois pas comment ce code pourrait ou devrait être appelé.
Lorsque l'on exécute cette opération, on obtient x y c g
également, pourquoi le static { }
est appelé avant le constructeur de la séquence ?