Sobes.tech
Middle

Ce sunt cuvintele cheie final și finalize în Java și în ce constă diferența lor?

sobes.tech AI

Răspuns de la AI

final - cuvânt cheie pentru a indica imuabilitatea:

  • Variabilă: Referința sau valoarea nu poate fi schimbată după inițializare.
  • Metodă: Metoda nu poate fi suprascrisă într-o clasă derivată.
  • Clasă: Clasa nu poate fi moștenită.

finalize() - metodă apelată de colectorul de gunoi (Garbage Collector) înainte de a elimina un obiect din memorie. Se află în clasa Object și este destinată să elibereze resurse externe.

Diferențe:

final finalize()
Cuvânt cheie Metodă
Indică imuabilitate Este apelată înainte de eliminarea obiectului
Legată de declarație Legată de ciclul de viață al obiectului
Se aplică variabilelor, metodelor, claselor Doar obiectelor

Exemplu de utilizare a final:

public class FinalExample {
    final int finalVariable = 10;

    final void finalMethod() {
        // logică metodă imuabilă
    }
}

final class FinalClass {
    // conținut
}

Exemplu de utilizare a finalize():

public class FinalizeExample {
    @Override
    protected void finalize() throws Throwable {
        try {
            // Curățarea resurselor externe, cum ar fi închiderea unei conexiuni
            System.out.println("Finalizing FinalizeExample object...");
        } finally {
            super.finalize(); // Apelați întotdeauna super.finalize()
        }
    }
}

Important: Utilizarea finalize() nu este recomandată în Java modern din cauza timpului de execuție imprevizibil și a potențialelor probleme de performanță. Pentru gestionarea resurselor, se preferă utilizarea blocurilor try-with-resources.