我有这样的代码,当我在声纳下运行时,它总是在这一行抱怨value.contains("true")
String value = getValue("/data/" + set, property);
if (!Strings.isNullOrEmpty(value)) {
if (value.contains("true")) {
return true;
} else {
return false;
}
} else {
return false;
}
这是它给我的信息:NullPointerException might be thrown as 'value' is nullable here
我已经在检查上面的空检查值,那么为什么它在里面抱怨?我做错了什么吗?
更新:
在安迪的建议下。我重写了这样的东西:
String value = getValue("/data/" + set, property);
if (value!=null) {
return Boolean.parseBoolean(value);
}
return false;
声纳很可能不理解Strings.isNullOrEmpty
的语义。
如果你把条件写成:
if (value != null) {
是否在空字符串上调用contains
并不重要。
另外,这个:
if (value.contains("true")) {
return true;
} else {
return false;
}
更容易写成
return value.contains("true");
总的来说,你可以把它写成:
return value != null && value.contains("true");
编辑更新:如果您使用的是Boolean.parseBoolean
,您甚至不需要空检查。parseBoolean
返回空输入的false
。
String value = getValue("/data/" + set, property);
return Boolean.parseBoolean(value);