– 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:
class Kot
{
String imie;
Kot(String imie)
{
this.imie = imie;
}
protected void finalize() throws Throwable
{
System.out.println(imie + " został zniszczony");
}
}
– 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.
GO TO FULL VERSION