Passing a literal null
to an Optional
accepting parameter is likely a bug.
Optional
is already designed to encode missing values through a non-null
instance.
Optional<Integer> double(Optional<Integer> i) {
return i.map(i -> i * 2);
}
Optional<Integer> doubled = double(null);
Optional<Integer> doubled = double(Optional.empty());
This is a scenario that can easily happen when refactoring code from accepting
@Nullable
parameters to accept Optional
s. Note that the check will not match
if the parameter is explicitly annotated @Nullable
.
Suppress false positives by adding the suppression annotation @SuppressWarnings("NullOptional")
to the enclosing element.