Re: Une bien étrange NPE.
Jean-Baptiste BRIAUD -- Novlog <[email protected]> Fri, 15 Apr 2011 22:31:39 +0200
| Newsgroups | gmane.comp.java.french.general |
|---|---|
| Message-ID | <[email protected]> |
Juste un élément que j'ai oublié : Voici la ligne 2 : Integer i = (b ? 40 : a.n()) Le Integer i devant donner le signal pour l'autoboxing. visiblement, la partie compila time dispose bien de l'info, mais @runtime, çà plante. Que çà plante ne me gène pas tellement, ce qui est troublant, c'est le type de l'exception. Pourquoi une NPE ? On 15 avr. 2011, at 22:06, Jean-Baptiste BRIAUD -- Novlog wrote: > 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.