Ich schaue auf den Code unten und finde etwas Seltsames:
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 ");
}
}
Ich hätte erwartet, dass dies zu einem Kompilierungsfehler führt, da das System.out
mit "y" nicht zu einer Methodendeklaration gehört, sondern nur zu a { }
. Warum ist das gültig? Ich sehe nicht, wie dieser Code aufgerufen werden würde oder sollte.
Wenn dies ausgeführt wird, wird x y c g
auch erzeugt , warum wird das static { }
vor dem Sequenzkonstruktor aufgerufen?