当检查在方法内部时,如何避免空指针访问警告?

功绩

我处理以下方法:

boolean isNullOrEmpty(String s) {
  return s == null || s.length() == 0;
}

问题是,它与不兼容@Nullable为方便起见,在下面的代码中,当不应该显示警告时会显示。

void test(@Nullable String s) {
  if (!isNullOrEmpty(s)) {
    s.length(); // warning : o may be null
  }
}

有没有办法让这个警告消失,同时节约isNullOrEmptyNullable

埃里克·哈格斯特罗姆

我认为,如果您重构一些使用方式Optional,将会更好。

@NonNull Optional<String> optNullOrEmpty(@Nullable String s) {
  if (s == null || s.length() == 0)
    return Optional.empty();
  else
    return Optional.of(s);
}

然后,您可以将其用作:

void test(@Nullable String s) {
  @NonNull Optional<String> os = optNullOrEmpty(s);
  if (os.isPresent()) {
    @NonNull String s1 = os.get();
    s1.length(); // No warning :-)
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章