Sobes.tech
Middle

Quelles sont les mots-clés final et finalize en Java, et quelle est leur différence?

sobes.tech IA

Réponse de l'IA

final - mot-clé pour indiquer l'immuabilité :

  • Variable : La référence ou la valeur ne peut pas être modifiée après l'initialisation.
  • Méthode : La méthode ne peut pas être redéfinie dans une classe dérivée.
  • Classe : La classe ne peut pas être héritée.

finalize() - méthode appelée par le ramasse-miettes (Garbage Collector) avant la suppression d'un objet de la mémoire. Elle se trouve dans la classe Object et est destinée à libérer des ressources externes.

Différences :

final finalize()
Mot-clé Méthode
Indique l'immuabilité Appelée avant la suppression de l'objet
Lié à la déclaration Lié au cycle de vie de l'objet
S'applique aux variables, méthodes, classes Seulement aux objets

Exemple d'utilisation de final :

public class FinalExample {
    final int finalVariable = 10;

    final void finalMethod() {
        // logique de méthode immuable
    }
}

final class FinalClass {
    // contenu
}

Exemple d'utilisation de finalize() :

public class FinalizeExample {
    @Override
    protected void finalize() throws Throwable {
        try {
            // Nettoyage des ressources externes, comme fermer une connexion
            System.out.println("Finalisation de l'objet FinalizeExample...");
        } finally {
            super.finalize(); // Toujours appeler super.finalize()
        }
    }
}

Important : L'utilisation de finalize() n'est pas recommandée en Java moderne en raison de son temps d'exécution imprévisible et de possibles problèmes de performance. Il est préférable d'utiliser des blocs try-with-resources pour gérer les ressources.