Reports 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