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 me serais attendu à ce que cela donne une erreur de compilation car le System.out
avec "y" n'appartient pas à une déclaration de méthode juste un { }
. Pourquoi est-ce valable? Je ne vois pas comment ce code serait ou devrait être appelé.
Lors de son exécution, cela produit x y c g
également, pourquoi est- static { }
il appelé avant le constructeur de séquence?