Sobes.tech
Middle

Co jsou klíčová slova final a finalize v jazyce Java a v čem spočívá jejich rozdíl?

sobes.tech AI

Odpověď od AI

final - klíčové slovo pro označení neměnnosti:

  • Proměnná: Odkaz nebo hodnota nem může být změněna po inicializaci.
  • Metoda: Metoda nem může být přepsána v odvozené třídě.
  • Třída: Třída nemůže být děděna.

finalize() - metoda volaná garbage collectorem před odstraněním objektu z paměti. Nachází se v třídě Object a je určena k uvolnění externích zdrojů.

Rozdíly:

final finalize()
Klíčové slovo Metoda
Označuje neměnnost Volá se před odstraněním objektu
Vztahuje se k deklaraci Vztahuje se k životnímu cyklu objektu
Používá se na proměnné, metody, třídy Pouze na objekty

Příklad použití final:

public class FinalExample {
    final int finalVariable = 10;

    final void finalMethod() {
        // neměnná logika metody
    }
}

final class FinalClass {
    // obsah
}

Příklad použití finalize():

public class FinalizeExample {
    @Override
    protected void finalize() throws Throwable {
        try {
            // Úklid externích zdrojů, např. uzavření spojení
            System.out.println("Finalizing FinalizeExample object...");
        } finally {
            super.finalize(); // Vždy volat super.finalize()
        }
    }
}

Důležité: Použití finalize() se v moderním Java nedoporučuje kvůli nepředvídatelnému času provedení a možným problémům s výkonem. Správu zdrojů je vhodnější řešit pomocí bloků try-with-resources.