Weitere aktuelle Java-Titel finden Sie bei dpunkt.
 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index


4.3.3

Statische Initialisierungen


Es gibt Fälle, in denen Initialisierungen nicht im Konstruktor und damit für jedes Exemplar erneut, sondern genau einmal am Anfang der Benutzung einer Klasse durchgeführt werden müssen. Zu diesem Zweck definiert Java ein eigenes Sprachelement: die statischen Initialisierungen. Statische Initialisierungen werden genau einmal ausgeführt, nämlich zu dem Zeitpunkt, an dem eine Klasse vom Laufzeitsystem geladen wird.

Sie werden häufig verwendet, wenn statische Datenelemente mit Anfangswerten belegt werden sollen, die sich nicht mit einem einfachen Ausdruck implementieren lassen. Ein weiterer Anwendungsfall ist das Laden von Shared Libraries, die Implementierungen für native-Methoden enthalten.

Syntaktisch bestehen statische Initialisierungen einfach aus dem Schlüsselwort static, dem in geschweiften Klammern ein Anweisungsblock folgt:
   static {
     // Anweisungen 
   }
Das folgende Beispiel zeigt einen einfachen Kodierer, bei dem die Buchstaben eines Textes durch int-Werte ersetzt werden. Alle Exemplare sollen dieselbe Kodierungstabelle benutzen.
   class Cipher {
     static int[] codeTable = new int[26];
     ...
     static {
        for(int i = 0; i < 25; i++)
          codeTable[ i ] = i*(i+1);
     }   
   
   }
Es ist auch zulässig, dass in einer Klassendefinition mehrere statische Initialisierungen stehen. Allerdings dürfen sie nur zwischen Methoden stehen. Innerhalb von Methoden sind static-Blöcke nicht zulässig.

Nach dem Laden der Klasse werden alle statischen Initialisierungen einfach hintereinander ausgeführt. In statischen Initialisierungen sind folgende Dinge zu beachten: Wenn in einer statischen Initialisierung eine Exception auftritt, wird ein ExceptionInInitializerError ausgelöst.


 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index

Copyright © 2002 dpunkt.Verlag, Heidelberg. Alle Rechte vorbehalten.