java - NullPointerException 可能会抛出,因为此处的“值”可以为空声纳警告
问题描述
我有这样的代码,当我在声纳下运行它时,它总是在这条线上抱怨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
,您甚至不需要空检查。parseBoolean
返回false
空输入。
String value = getValue("/data/" + set, property);
return Boolean.parseBoolean(value);
推荐阅读
- c# - 使用 MS Graph C# SDK 的分页功能,我是否能够获取 NextLink 并稍后恢复通话?
- angular - 如何在输入字段中突出显示一些具有颜色背景的特定文本 - 角度
- java - Groovy 3.0.5 与 Mockito 3.6.28 不兼容吗?模拟不可用
- azure - Azure Azcopy - 我可以只复制没有文件的文件夹吗?
- r - 如何根据组内的前一行值转换后续行值?
- visual-studio - VS2019 .csproj 删除或修改链接内容文件
- eclipse - PyDev 和 Eclipse - 有没有办法在悬停时显示函数文档?
- java - 注销请求返回 http 404
- angular - 在我的角度项目中,为什么我的迭代(ngFor)组件的索引变量变成了字符串而不是数字
- python - 为什么我收到 TypeError: unsupported operand type(s) for -: 'str' and 'int'