Middle
Šta su ključne reči final i finalize u Javi i u čemu se razlikuju?
sobes.tech АИ
Одговор од АИ
final - ključna reč za označavanje nepromenljivosti:
- Promenljiva: Referenca ili vrednost ne može biti promenjena nakon inicijalizacije.
- Metod: Metod ne može biti prepisan u izvedenoj klasi.
- Klasa: Klasa ne može biti nasledjena.
finalize() - metoda koja se poziva od strane sakupljača smeća (Garbage Collector) pre nego što objekat bude uklonjen iz memorije. Nalazi se u klasi Object i namenjena je za oslobađanje eksternih resursa.
Razlike:
final |
finalize() |
|---|---|
| Ključna reč | Metod |
| Označava nepromenljivost | Poziva se pre brisanja objekta |
| Povezano sa deklaracijom | Povezano sa životnim ciklusom objekta |
| Primjenjuje se na promenljive, metode, klase | Samo na objekte |
Primer korišćenja final:
public class FinalExample {
final int finalVariable = 10;
final void finalMethod() {
// nepromenljiva logika metode
}
}
final class FinalClass {
// sadržaj
}
Primer korišćenja finalize():
public class FinalizeExample {
@Override
protected void finalize() throws Throwable {
try {
// čišćenje eksternih resursa, npr. zatvaranje veze
System.out.println("Finalizing FinalizeExample object...");
} finally {
super.finalize(); // Uvek pozovite super.finalize()
}
}
}
Važno: Korišćenje finalize() se ne preporučuje u savremenom Java-u zbog nepredvidivog vremena izvršenja i potencijalnih problema sa performansom. Za upravljanje resursima, preporučuje se korišćenje blokova try-with-resources.