„Hallo noch mal. Heute werden wir kurz etwas über die finalize()-Methode erfahren. Die Java Virtual Machine ruft die finalize()-Methode auf, bevor sie ein Objekt zerstört. Die Methode wird verwendet, um Systemressourcen freizugeben oder andere Bereinigungsaufgaben durchzuführen. Tatsächlich ist diese Methode genau das Gegenteil von einem Konstruktor in Java. Du erinnerst dich bestimmt, dass Konstruktoren verwendet werden, um Objekte zu erstellen.“

„Die Object-Klasse besitzt eine finalize()-Methode, was bedeutet, dass jede andere Klasse dies auch tut (da alle Java-Klassen von der Object-Klasse abgeleitet sind). Du kannst einfach deine eigene finalize()-Methode in deiner Klasse implementieren.“

„Hier ist ein Beispiel:“

Beispiel:
class Cat
{
    String name;

    Cat(String name)
    {
        this.name = name;
    }

    protected void finalize() throws Throwable
    {
        System.out.println(name + " has been destroyed");
    }
}

„Das klingt logisch, Ellie.“

„Aber du musst dir bewusst sein, dass die Java Virtual Machine entscheidet, ob diese Methode aufgerufen werden soll. Meistens werden Objekte, die innerhalb einer Methode erstellt und bei Abschluss der Methode als Garbage markiert werden, sofort zerstört, ohne dass finalize() aufgerufen wird. Diese Methode ist eher ein Backup als eine zuverlässige Lösung. Am besten ist es, alle Systemressourcen freizugeben (indem du die Referenzen auf andere Objekte auf null setzt), während das Objekt noch am Leben ist. Ich werde dir später mehr über die Vorteile und Details dieser Methode erzählen. An dieser Stelle musst du nur zwei Dinge wissen: Es gibt eine solche Methode und (Überraschung!) sie wird nicht immer aufgerufen.“