Sobes.tech
Middle

Čo sú kľúčové slová final a finalize v Jave a v čom spočíva ich rozdiel?

sobes.tech AI

Odpoveď od AI

final - kľúčové slovo na označenie nemennosti:

  • Premenná: Referencia alebo hodnota nemôžu byť zmenené po inicializácii.
  • Metóda: Metóda nemôže byť prepísaná v odvodenom triede.
  • Trieda: Trieda nemôže byť zdedená.

finalize() - metóda volaná garbage collectorem pred odstránením objektu z pamäte. Nachádza sa v triede Object a je určená na uvoľnenie externých zdrojov.

Rozdiely:

final finalize()
Kľúčové slovo Metóda
Označuje nemennosť Volá sa pred odstránením objektu
Súvisí s deklaráciou Súvisí s životným cyklom objektu
Používa sa na premenné, metódy, triedy Iba na objekty

Príklad použitia final:

public class FinalExample {
    final int finalVariable = 10;

    final void finalMethod() {
        // nemenná logika metódy
    }
}

final class FinalClass {
    // obsah
}

Príklad použitia finalize():

public class FinalizeExample {
    @Override
    protected void finalize() throws Throwable {
        try {
            // upratovanie externých zdrojov, napr. zatvorenie spojenia
            System.out.println("Finalizing FinalizeExample object...");
        } finally {
            super.finalize(); // Vždy volajte super.finalize()
        }
    }
}

Dôležité: Použitie finalize() sa neodporúča v modernom Jave kvôli nepredvídateľnému času vykonania a možným problémom s výkonom. Na správu zdrojov je vhodnejšie použiť bloky try-with-resources.