Initialisierungsblöcke

Also zusammengefasst kann man sagen:

Ein statischer Initialisierungsblock wird verwendet, wenn man irgendeinen Code einmal für alle Objekte einer Klasse ausführen will.

Instanz-Initialisierungsblöcke sind nützlich, wenn man Code ausführen lassen möchten, unabhängig davon, welcher Konstruktor verwendet wird oder ob man eine Instanzinitialisierung für anonyme Klassen durchführen möchten.

Die Reihenfolge der Ausführung:
  1. statische Initialisierungsblöcke der Superklassen

  2. statische Initialisierungsblöcke der Klasse

  3. Instanz-Initialisierungsblöcke der Superklassen

  4. Konstruktoren der Superklassen

  5. Instanz-Initialisierungsblöcke der Klasse

  6. Konstruktor der Klasse

Den letzten Teil habe ich noch nicht verstanden:
"...oder ob man eine Instanzinitialisierung für anonyme Klassen durchführen möchten."
 
Hier wäre ein Bespielklasse mit einer inneren Klasse.
Hast du das gemeint?

Java:
public class Outer {
   
   
    public Outer() {
    }
   
   
    class Inner{
       
        Inner(){
           
        }
    }
}
 
Ok, ich weiß jetzt, wie man anonyme Klassen erstellt. Trotzdem verstehe ich immer noch nicht den letzten Teil dieses Satzes:
...oder wenn man eine Instanzinitialisierung für anonyme Klassen durchführen möchten.

Java:
public class Outer {
   
   
    public Outer() {
    }
   
   
    Object o = new Object(){
       
       
    };
}
 

JStein52

Top Contributor
Du könntest jetzt in der inneren anonymen Klasse eine Instanzvariable definieren und initialisieren
Code:
    Object o = new Object(){
       int myInnerVar = 17;
       public void myInnerMethod() {
               System.out.println("Var: "+myInnerVar);
       }
       
    };
Ich hoffe die Klammern passen :)
 
Ok, ich glaube jetzt habe ich es verstanden.
myInnrVar ist einfach eine Objektvariable der anonymen Klasse(nicht der äußeren Klasse).
Und das ist mit dem Teilsatz gemeint?
 

JStein52

Top Contributor
Ja. Und du kannst an der Stelle natürlich auch noch anderen Code hinschreiben der sonst im Konstruktor ablaufen würde, analog zu den sonstigen Instanzinitialisierungen ...
 

mrBrown

Super-Moderator
Mitarbeiter
Du könntest jetzt in der inneren anonymen Klasse eine Instanzvariable definieren und initialisieren
Code:
    Object o = new Object(){
       int myInnerVar = 17;
       public void myInnerMethod() {
               System.out.println("Var: "+myInnerVar);
       }
   
    };
Ich hoffe die Klammern passen :)
das ist allerdings kein Instanz-initializer sondern der ganz normale Klassen-Körper.

Der sähe so aus:

Java:
    Object o = new Object(){
       int myInnerVar = 17;
       {//Dies hier
           myInnerMethod();
       }

       public void myInnerMethod() {
               System.out.println("Var: "+myInnerVar);
       }
   
    };
 

Ähnliche Java Themen

Neue Themen


Oben