报告 null 分配给 Optional 变量或从返回 Optional 的方法返回。

建议您使用 Optional.empty()(或 Optional.absent() 用于 Guava)来表示空值。

示例:


  Optional<Integer> foo(boolean flag) {
    return flag ? Optional.of(42) : null;
  }

在应用快速修复后:


  Optional<Integer> foo(boolean flag) {
    return flag ? Optional.of(42) : Optional.empty();
  }

配置检查:

使用 报告 Optional 与 null 的比较 选项还可以报告optional == null 之类的比较。 虽然在极少数情况下(例如延迟初始化的可选字段)这可能是正确的,但可选变量通常不会为 null,并且可能应为 optional.isPresent()

仅当项目或模块的语言级别为 8 或更高时才报告此检查。

2017.2 的新功能