Sobes.tech
Junior — Middle

Jak najczęściej realizuje się zakończenie obiektów w języku Java?

sobes.tech AI

Odpowiedź od AI

W języku Java do zarządzania kończeniem pracy obiektów zazwyczaj używa się metody finalize(), która jest wywoływana przez garbage collector przed usunięciem obiektu. Jednak od Java 9 ta metoda jest uważana za przestarzałą i niezalecana do użycia ze względu na nieprzewidywalność momentu wywołania i problemy z wydajnością.

Nowoczesne podejście polega na użyciu interfejsu AutoCloseable i konstrukcji try-with-resources do jawnego zwalniania zasobów:

class Resource implements AutoCloseable {
    public void close() {
        // zwalnianie zasobów
        System.out.println("Zasób zamknięty");
    }
}

try (Resource res = new Resource()) {
    // praca z zasobem
}
// tutaj automatycznie wywoływane jest res.close()

W ten sposób kończenie pracy obiektów, zwłaszcza tych zarządzających zasobami, odbywa się przez jawne zamknięcie, a nie przez finalize().