Inline-Initialisierungsblöcke in Java

ich habe ein klasse

public class MyMain{
    public static void main(String... arg){
            Temp t = new Temp(){
                {
                    System.out.println(" instance initialize");
                }
            };

        }
    }

class Temp{
    int i;

    {
        i=9;
        System.out.println("Static"+i);
    }
    Temp(){
        System.out.println("Temp const "+i);
    }
}

Wenn ich die Hauptmethode ausführe, kommt die Ausgabe:

Static9
Temp const 9
instance initialize

Idealerweise werden die Blöcke vor dem Konstruktor ausgeführt, aber der Inline-Initialisierungsblock wird nach dem Konstruktor aufgerufen. Warum?

Antworten auf die Frage(7)

Ihre Antwort auf die Frage