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 ?