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.