我处理以下方法:
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?
解决方法:
我想如果你重构一下使用Optional你会更好.
@NonNull Optional 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 os = optNullOrEmpty(s);
if (os.isPresent()) {
@NonNull String s1 = os.get();
s1.length(); // No warning :-)
}
}
标签:java,eclipse,java-8
来源: https://codeday.me/bug/20190609/1201833.html