Middle
Wat zijn de sleutelwoorden final en finalize in Java, en wat is het verschil?
sobes.tech AI
Antwoord van AI
final - trefwoord om onveranderlijkheid aan te geven:
- Variabele: Verwijzing of waarde kan na initialisatie niet worden gewijzigd.
- Methode: Methode kan niet worden overschreven in een afgeleide klasse.
- Klasse: Klasse kan niet worden geërfd.
finalize() - methode die wordt aangeroepen door de garbage collector voordat een object uit het geheugen wordt verwijderd. Het bevindt zich in de klasse Object en is bedoeld om externe bronnen vrij te maken.
Verschillen:
final |
finalize() |
|---|---|
| Trefwoord | Methode |
| Geeft onveranderlijkheid aan | Wordt aangeroepen voordat het object wordt verwijderd |
| Gerelateerd aan de declaratie | Gerelateerd aan de levenscyclus van het object |
| Toegepast op variabelen, methoden, klassen | Alleen op objecten |
Voorbeeld van gebruik van final:
public class FinalExample {
final int finalVariable = 10;
final void finalMethod() {
// ongewijzigde methodelogica
}
}
final class FinalClass {
// inhoud
}
Voorbeeld van gebruik van finalize():
public class FinalizeExample {
@Override
protected void finalize() throws Throwable {
try {
// Opruimen van externe bronnen, zoals het sluiten van een verbinding
System.out.println("Finalizing FinalizeExample object...");
} finally {
super.finalize(); // Roep altijd super.finalize() aan
}
}
}
Belangrijk: Het gebruik van finalize() wordt in modern Java afgeraden vanwege onvoorspelbare uitvoeringstijd en mogelijke prestatieproblemen. Resourcebeheer wordt bij voorkeur gedaan met try-with-resources-blokken.