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.4.1

Finalisierung von Objekten


Als Ersatz für Destruktoren kann eine Klasse in Java die von Object geerbte Methode finalize() überschreiben, in der Abschlussaktionen implementiert werden können. Diese Methode wird auch Finalisierer (Finalizer) genannt. finalize() wird automatisch vom Garbage Collector aufgerufen, bevor das Objekt entfernt wird.

Eine flexiblere Möglichkeit zur Implementierung von Abschlussaktionen bieten die Referenzklassen oder die Shutdown-Routinen.

Die Klasse java.io.FileInputStream ist ein Beispiel aus der Standardbibliothek, das von der Finalisierung Gebrauch macht. Mit FileInputStream können Daten aus einer Datei gelesen werden. Sie muss vor der Entfernung des Objekts noch eine Datei schließen und überschreibt hierzu finalize() entsprechend:
    protected void finalize() throws IOException {
        if (fd != null) {
            if (fd != fd.in) {
                close();
            }
        }
finalize() wird standardmäßig mit der Zugriffsklasse protected vereinbart.

Hier noch einmal der genaue Ablauf: Bezüglich der Finalisierung gelten folgende Regeln: [1.1]Seit der Version 1.1 besteht die Möglichkeit, mit dem Aufruf
  System.runFinalization();
noch ausstehende Finalisierungen sofort zu starten. Alternativ kann mit
  System.runFinalizersOnExit(true);
die Ausführung ausstehender finalize()-Methoden am Ende der Laufzeit der Virtual Machine erzwungen werden.


 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.