[英]How do I avoid “potential null pointer access” when using Preconditions.checkNotNull()?
[英]How can I avoid null pointer access warning when the check is inside a method?
我处理以下方法:
boolean isNullOrEmpty(String s) {
return s == null || s.length() == 0;
}
麻烦的是,它与@Nullable
不兼容。 对于istance,在以下代码中,不应显示警告。
void test(@Nullable String s) {
if (!isNullOrEmpty(s)) {
s.length(); // warning : o may be null
}
}
有没有办法让这个警告消失,同时保存isNullOrEmpty
和Nullable
?
你有没有理由不使用if(o!= null)?
Objects.isNull的目的是用作谓词:.filter(Objects :: isNull)
这个警告可能是一个错误。 如果您真的希望它消失,您可以使用@SuppressWarnings注释您的方法
我想如果你重构一下使用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 :-)
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.