– Witaj ponownie. Dzisiaj opowiem Ci krótko o metodzie finalize(). Wirtualna maszyna Java wywołuje metodę finalize() przed zniszczeniem obiektu. Metoda ta jest używana do zwolnienia zasobów systemu bądź wykonania innych zadań związanych z oczyszczaniem. W rzeczywistości ta metoda jest dokładnym przeciwieństwem konstruktora w Javie. Jak zapewne pamiętasz, konstruktorów używa się do tworzenia obiektów.

– Klasa Obiekt ma metodę finalize(), co oznacza, że każda inna klasa także ją ma (ponieważ wszystkie klasy w Javie pochodzą od klasy Obiekt). Możesz po prostu zaimplementować swoją własną metodę finalize() do Twojej klasy.

– Oto przykład:

Przykład:
class Kot
{
    String imie;

    Kot(String imie)
    {
        this.imie = imie;
    }

    protected void finalize() throws Throwable
    {
        System.out.println(imie + " został zniszczony");
    }
}
undefined
2
Zadanie
Składnia Java, poziom 6, lekcja 3
Niedostępne
Wprowadzanie kodu
Nie musisz myśleć, po prostu go wyklep! Brzmi to trochę paradoksalnie, ale czasami Twoje palce „pamiętają” kod lepiej niż Twój świadomy umysł. Właśnie dlatego trening w tajnym centrum CodeGym zawiera zadania wymagające wprowadzania kodu. Wprowadzając kod, przyzwyczajasz się do składni oraz zarabiasz ciemną materię. Co więcej, walczysz z własnym lenistwem!

– To ma sens, Basiu.

– Ale powinieneś być świadomy tego, że to Wirtualna maszyna Java decyduje, czy wywołać tę metodę. Najczęściej jest tak, że kiedy dana metoda się kończy, obiekty utworzone wewnątrz niej i oznaczone jako nieużytek zostają natychmiastowo zniszczone bez wywołania finalize(). Ta metoda jest bardziej jak backup niż jak niezawodne rozwiązanie. Najlepiej jest zwolnić wszystkie zasoby (przypisując referencjom do innych obiektów wartość null), kiedy obiekt wciąż jest żywy. Później opowiem Ci więcej o zaletach i niuansach tej metody. Teraz musisz zapamiętać tylko dwie rzeczy: taka metoda istnieje i (niespodzianka!) nie zawsze jest wywoływana.