rspec/rules/S5411/java/rule.adoc

46 lines
1.0 KiB
Plaintext

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.
== Noncompliant Code Example
----
Boolean b = getBoolean();
if (b) { // Noncompliant, it will throw NPE when b == null
foo();
} else {
bar();
}
----
== Compliant Solution
----
Boolean b = getBoolean();
if (Boolean.TRUE.equals(b)) {
foo();
} else {
bar(); // will be invoked for both b == false and b == null
}
----
== 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[]