我有这样的代码,当我在声纳下运行它时,它总是在此行抱怨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
我已经在上面检查null值的值了,然后为什么在里面抱怨呢?难道我做错了什么?
更新:
根据安迪的建议。我重写了这样的东西:
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
,则甚至不需要null检查。 parseBoolean
为空输入返回false
。String value = getValue("/data/" + set, property);
return Boolean.parseBoolean(value);