Illustration einer tropischen Insel mit Palmen und einem hohen Berg

Java Blog für Programmierer

Initialisierung von Klassenvariablen

· Christian Ullenboom

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 schreibenWas der Compiler generiertclass 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 );

Kategorien: Allgemein

2 Kommentare

Klaus-Peter Budzinski ·

Klassenintialisierer sind nicht ganz ungefährtlich, denn wenn der Code eine Ausnahme das "t" bei ungefährtlich passt nicht an dieser Stelle

Die bisherigen Kommentare wurden aus WordPress übernommen. Neue Kommentare sind derzeit geschlossen.

← Alle Beiträge