public class Foobar {
public static void main(String[] args) {
// example:
Boolean ignore = null;
if (ignore == false) {
System.out.println("Do not ignore!");
}
}
}
The pitfall here is that null
is compared to false
. Since we're comparing a primitive boolean
against a Boolean
, Java attempts to unbox the the Boolean
Object
into a primitive equivalent, ready for comparison. However, since that value is null
, a NullPointerException
is thrown.
Java is incapable of comparing primitive types against null
values, which causes a NullPointerException
at runtime. Consider the primitive case of the condition false == null
; this would generate a compile time error incomparable types: int and <null>
.