Une bien étrange NPE.

Jean-Baptiste BRIAUD -- Novlog <[email protected]> Fri, 15 Apr 2011 22:06:42 +0200
Newsgroups gmane.comp.java.french.general
Message-ID <[email protected]>
Bonjour à tous,

Ca faisait très très longtemps que je n'avais pas eu de problème de ce genre.

Une NPE.
Jusque là, rien à dire.
J'investige ... et voici ce que je trouve (conceptuellement).

ligne 1 : a.m();
ligne 2 : a.n();

Or la NPE est à la ligne 2 !
Donc a est nul, mais la ligne 1 est passé.

Maintenant voici le détail de la ligne 2 : b ? 40 : a.n()

La méthode n retourne un Integer... sauf que 40 est un int, pas un Integer.
Résultat, çà passe la compile depuis l'autoboxing, mais visiblement pas le runtime.

Correction de la ligne 2 : b ? new Integer(40) : a.n()
Comme au bon vieux temps, sans autoboxing ... et çà passe.

Etrange, non ? Serait-ce un bon puzzle ? 
Je suis en 1.6.