Initialisierung von Klassenvariablen

Wo werden eigentlich Klassenvariablen initialisiert? Im Konstruktor ergibt dies keinen Sinn, da für Klassenvariablen keine Objekte angelegt werden müssen. Dafür gibt es den static{}-Block. Dieser wird immer dann ausgeführt, wenn der Klassenlader eine Klasse in die Laufzeitumgebung geladen hat. Für eine statische Initialisierung wird also wieder der Compiler etwas einfügen:

Was wir schreiben Was der Compiler generiert
class Beer {
static String isFreeFor = „Homer“;
}
class Beer {
static String isFreeFor;
static {
isFreeFor = „Homer“;
}
}

Klassenintialisierer sind nicht ganz ungefährlich, denn wenn der Code eine Ausnahme auslöst, dann gibt es einen harten lang.ExceptionInInitializerError. Leser können das testen, in dem geändert wird:

static String isFreeFor = „Homer“.substring( -1 );

und dann aus dem Hauptprogramm aufrufen:

out.println( Beer.isFreeFor );

Ähnliche Beiträge

2 Gedanken zu “Initialisierung von Klassenvariablen

  1. Klassenintialisierer sind nicht ganz ungefährtlich, denn wenn der Code eine Ausnahme

    das „t“ bei ungefährtlich passt nicht an dieser Stelle

Schreibe einen Kommentar

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