我有这样的代码,当我在声纳下运行时,它总是在这条线上抱怨 value.contains("true")
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
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 。
Strings.isNullOrEmpty
如果您将条件写为:
if (value != null) {
你打电话来也没关系 contains 在空字符串上。
contains
此外,这:
if (value.contains("true")) { return true; } else { return false; }
更容易写为
return value.contains("true");
总的来说,你可以这样写:
return value != null && value.contains("true");
编辑更新:如果您正在使用 Boolean.parseBoolean 你甚至不需要空支票。 parseBoolean 退货 false 对于空输入。
Boolean.parseBoolean
parseBoolean
false
String value = getValue("/data/" + set, property); return Boolean.parseBoolean(value);