空指针异常可能会被抛出,因为"值"在这里可以为空 声纳警告



我有这样的代码,当我在声纳下运行时,它总是在这一行抱怨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);

相关内容

最新更新