Sobes.tech
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.