null
assigned to Optional
variable or returned from method returning Optional
.
It's recommended that you use Optional.empty()
(or Optional.absent()
for Guava) to denote an empty value.
Example:
Optional<Integer> foo(boolean flag) {
return flag ? Optional.of(42) : null;
}
After the quick-fix is applied:
Optional<Integer> foo(boolean flag) {
return flag ? Optional.of(42) : Optional.empty();
}
Configure the inspection:
Use the Report comparison of Optional with null option to also report comparisons like optional == null
. While in rare cases (e.g. lazily initialized
optional field) this might be correct, optional variable is usually never null, and probably optional.isPresent()
was
intended.
New in 2017.2