Back to Error Prone

NullOptional

docs/bugpattern/NullOptional.md

2.49.0581 B
Original Source

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.

java
Optional<Integer> double(Optional<Integer> i) {
  return i.map(i -> i * 2);
}

Optional<Integer> doubled = double(null);
java
Optional<Integer> doubled = double(Optional.empty());

This is a scenario that can easily happen when refactoring code from accepting @Nullable parameters to accept Optionals. Note that the check will not match if the parameter is explicitly annotated @Nullable.