Sobes.tech
Junior

Cosa sono le parole chiave final e finalize in Java, e quali sono le loro differenze?

sobes.tech AI

Risposta dell'AI

In Java, final e finalize sono concetti diversi con scopi differenti:

  • final è una parola chiave usata per dichiarare:
    • Costanti (variabili che non possono essere modificate dopo l'inizializzazione).
    • Metodi che non possono essere sovrascritti nelle sottoclassi.
    • Classi che non possono essere ereditate.

Esempio:

final int x = 10; // x non può essere modificato
final class MyClass {} // classe non ereditabile
final void myMethod() {} // metodo non sovrascrivibile
  • finalize() è un metodo della classe Object, chiamato dal garbage collector prima di rimuovere l'oggetto dalla memoria. È destinato a liberare risorse, ma il suo uso non è raccomandato, poiché la chiamata non è garantita e può portare a comportamenti imprevedibili.

Esempio:

@Override
protected void finalize() throws Throwable {
    // liberare risorse
    super.finalize();
}

Differenze:

  • final è una parola chiave per controllare la modifica del codice.
  • finalize è un metodo per la pulizia prima della raccolta dei rifiuti, obsoleto e non raccomandato.