Re: Une bien étrange NPE.

Cédric Beust ♔ <[email protected]> Fri, 15 Apr 2011 13:35:02 -0700
Newsgroups gmane.comp.java.french.general
Message-ID <[email protected]>
L'autoboxing essaie de convertir un Integer qui est null en int.

-- 
Cédric


2011/4/15 Jean-Baptiste BRIAUD -- Novlog <[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.
>
>


-- 
Cédric