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.