Bonjour,
Quelles sont les bonnes pratique pour l'utilisation du finaliseurs?
Merci
Bonjour,
Quelles sont les bonnes pratique pour l'utilisation du finaliseurs?
Merci
finalize() est surtout surchargée pour libérer des objets qui ne le seraient pas automatiquement lors du passage du ramasse miettes (handle de fichiers, polices de caractères...). Ça permet de faire les dernières opérations avant que l'objet ne soit complètement détruit.
Bonsoir,
je souhaitais juste ajouter ceci : surcharger la méthode finalize est une mauvaise pratique car vous ne pouvez pas savoir à quel moment il sera appelé.
Il vaut mieux écrire une méthode dispose() vous-même et que vous appelerez vous-même. Swing emploie ce procédé (méthode dispose() sur les JFrame) tout comme les classes InputStream et OutputStream (méthode close()).
Voici ce que dit Joshua Bloch (expert chez Sun) dans Effective Java : "Un finaliseur est imprédictible, la plupart du temps dangereux et certainement inutile. Son utilisation peut provoquer des irrégularités, de mauvaises performances et des problèmes de portabilité."
Bonne soirée.
Coyote
La mauvaise compréhension est que finalize ne détruit pas l'objet ! Cette méthode est appelée lors de sa destruction par le GC. En aucun cas il ne faut l'appeler directement croyant que ça va détruire l'objet.
Java n'est pas C++ ! C'est la JVM qui gère tout ça.
Partager