Integer.intValue()
to convert from Integer
to int
.Now can you guess what the following code does when you call
FB.foo()
?
public class FB
{
public void foo()
{
int x;
x = bar();
System.out.println("X is " + x);
}
public Integer bar()
{
return null;
}
}
Yeah, it is throwing a
NullPointerException
in the assignment x = bar()
because bar()
is returning null
and the implicit bar().intValue()
is thus throwing the NPE. Without autoboxing, this is much more evident.Unfortunately it seems like FindBugs and other tools are not (yet) able to detect this (actually in my test code, FindBugs was not even able to detect the NPE in teh explicit call).