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.