« Re-bonjour. Aujourd'hui, nous allons découvrir rapidement la méthode finalize(). La machine virtuelle Java appelle la méthode finalize() avant de détruire un objet. La méthode sert à désaffecter les ressources du système ou effectuer d'autres tâches de nettoyage. En fait, cette méthode est exactement le contraire d'un constructeur en Java. Tu te souviens sûrement que les constructeurs sont utilisés pour créer des objets. »

« La classe Object a une méthode finalize(), ce qui signifie que toutes les autres classes aussi (puisque toutes les classes Java dérivent de la classe Object). Tu peux simplement implémenter ta propre méthode finalize() dans ta classe. »

« Voici un exemple : »

Exemple :
class Cat
{
    String name;

    Cat(String name)
    {
        this.name = name;
    }

    protected void finalize() throws Throwable
    {
        System.out.println(name + " has been destroyed");
    }
}

« Tout cela me semble logique, Ellie. »

« Mais tu dois être conscient que c'est la machine virtuelle Java qui décide d'appeler cette méthode ou non . Dans la majorité des cas, les objets créés à l'intérieur d'une méthode et déclarés inutiles lorsque la méthode se termine sont détruits immédiatement sans appel à finalize(). Cette méthode est une sorte d'assurance plutôt qu'une solution fiable. La meilleure option est de libérer toutes les ressources système (en définissant les références aux autres objets sur null) tant que l'objet est encore en vie. Je t'en dirai plus sur les avantages et les nuances de cette méthode plus tard. À ce stade, il te suffit de comprendre deux choses : cette méthode existe, et (surprise !) elle n'est pas toujours appelée. »