Instance Initializers

Java kennt mehrere Arten von Initialisierern an Klassen. Dazu gehört vor allem der bekannte Konstruktor. Ebenso aber auch der statische Initialisierer und der Instant-Initialisierer.

public class Foo {
    public Foo() { System.out.println("constructor called"); }
 
    static { System.out.println("static initializer called"); }
 
    { System.out.println("instance initializer called"); }
}

Instanziiert man die Klasse Foo nun zweimal via:

new Foo();
new Foo();

So erzeugt dies die folgende Ausgabe:

static initializer called
instance initializer called
constructor called
instance initializer called
constructor called

Das praktische daran? Man kann automatisch Felder initialisieren lassen, auch final-Felder können über diese Art des Zugriffs gesetzt werden. Fügt man also zum Beispiel zu einem späteren Zeipunkt einen weiteren Konstruktor hinzu, kann das initialisieren der Felder nicht mehr vergessen werden, sofern es in den Instance Initializer ausgelagert wurde. Der Code wird somit auch leichter lesbar.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu. Weitere Informationen zum Datenschutz...

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen