Sobes.tech
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.