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.