Pour simplifier un probl�me sur un programme swing de plusieurs milliers de
lignes ...

Soit A une classe applicative ordinaire (d�riv�e de TObject)
A contient un objet de type B. Cet objet est initialis� dans le constructeur
de A :


class A
{
        B b_instance;

        public A()
        {
                b_instance = new B();
        }
}

La classe B contient un champ de la classe C (en fait un SimpleDateFormat).
Ce champ
est initialis� d�s la d�claration de l'objet.

class B
{
        C c_instance = new C();
}

Lorsque l'application (A) est sur le point de se fermer, je veux enregistrer
les donn�es
persistantes, et pour cela j'ai besoin de C. Or voila, quand dans mon c�de
je faisais :

Object d = c_instance.maMethode(monParametre);

le syst�me g�n�rait un NullPointerException. Or monParametre n'�tait pas
null, et a priori c_instance non plus.

Quand j'ai voulu en avoir le coeur net et que j'ai �crit :

0: if (c_instance != null)
1: {
2:      Object d = c_instance.maMethode(monParametre);
3: }

Le programme a plant� sur ... la ligne 0 !!!! Mon test de la nullit� d'un
pointeur a g�n�r� un NullPointerException !!!!!!!

Quelqu'un parmi vous a-t-il eu d�j� affaire � des trucs pareils ??? O�
est-ce un bogue du compilateur ou du d�bogueur de
Visual Caf�, que j'utilise au travail ?

Répondre à