我处理以下方法:
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
}
}
有没有办法让这个警告消失,同时节约isNullOrEmpty
和Nullable
?
我认为,如果您重构一些使用方式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] 删除。
我来说两句