我有这样的代码,当我在 Sonar 下运行它时,它总是在这一行提示 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,因为“值”在这里可为空
我已经在上面检查空检查的值,那么为什么它在里面提示呢?我做错了什么吗?
更新:
根据安迪的建议。我重写了这样的内容:
String value = getValue("/data/" + set, property);
if (value!=null) {
return Boolean.parseBoolean(value);
}
return false;
最佳答案
Sonar 可能不理解 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);
关于java - 可能会抛出 NullPointerException,因为 'value' 此处可为空 Sonar 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50593960/