When boxed type ``++java.lang.Boolean++`` is used as an expression it will throw ``++NullPointerException++`` if the value is ``++null++`` as defined in https://docs.oracle.com/javase/specs/jls/se8/html/jls-5.html#jls-5.1.8[Java Language Specification §5.1.8 Unboxing Conversion].


It is safer to avoid such conversion altogether and handle the ``++null++`` value explicitly.

Note, however, that no issues will be raised for Booleans that have already been null-checked.

== Noncompliant Code Example

[source,java]
----
Boolean b = getBoolean();
if (b) {  // Noncompliant, it will throw NPE when b == null
  foo();
} else {
  bar();
}
----


== Compliant Solution

[source,java]
----
Boolean b = getBoolean();
if (Boolean.TRUE.equals(b)) {
  foo(); 
} else {
  bar();  // will be invoked for both b == false and b == null
}
----

[source,java]
----
Boolean b = getBoolean();
if(b != null){
  String test = b ? "test" : "";
}
----

== See

* https://docs.oracle.com/javase/specs/jls/se8/html/jls-5.html#jls-5.1.8[Java Language Specification §5.1.8 Unboxing Conversion]

ifdef::env-github,rspecator-view[]

'''
== Implementation Specification
(visible only on this page)

include::message.adoc[]

include::highlighting.adoc[]

endif::env-github,rspecator-view[]
