Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java NullPointerException可能作为';价值';声纳警报在这里可以为空吗_Java_Sonarqube - Fatal编程技术网

Java NullPointerException可能作为';价值';声纳警报在这里可以为空吗

Java NullPointerException可能作为';价值';声纳警报在这里可以为空吗,java,sonarqube,Java,Sonarqube,我有一个这样的代码,当我在声纳下运行它时,它总是在这行value.contains(“true”) 下面是它给我的消息:NullPointerException可能会被抛出,因为“value”在这里可以为null 我已经在检查上面的空检查值,为什么它在里面抱怨呢?我做错什么了吗 更新: 在安迪的建议之后。我重写了如下内容: String value = getValue("/data/" + set, property); if (value!=null) { return Boolean.

我有一个这样的代码,当我在声纳下运行它时,它总是在这行
value.contains(“true”)

下面是它给我的消息:
NullPointerException可能会被抛出,因为“value”在这里可以为null

我已经在检查上面的空检查值,为什么它在里面抱怨呢?我做错什么了吗

更新:

在安迪的建议之后。我重写了如下内容:

String value = getValue("/data/" + set, property);
if (value!=null) {
  return Boolean.parseBoolean(value);
}
return false;

很可能sonar不理解
字符串的语义。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);

很可能sonar不理解
字符串的语义。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);

你很好。使用您的判断。如果您使用的是
Boolean.parseBoolean
,您甚至不需要空检查
parseBoolean
为空输入返回
false
。Boolean.parseBoolean将不起作用。它期望值为true(忽略大小写),但在原始代码中,值包含true。若值为true,则不需要进行空检查。您只需执行“true”即可。equalsIgnoreCase(value)我将忽略它,并使用您答案中的@AndyTurner,否则我将相应地更改代码。SonarJava应该完全能够理解
isNullOrEmpty
。能否指定方法的完全限定名和库的版本(如果有)?还有Java analyzer的版本,你很好。使用您的判断。如果您使用的是
Boolean.parseBoolean
,您甚至不需要空检查
parseBoolean
为空输入返回
false
。Boolean.parseBoolean将不起作用。它期望值为true(忽略大小写),但在原始代码中,值包含true。若值为true,则不需要进行空检查。您只需执行“true”即可。equalsIgnoreCase(value)我将忽略它,并使用您答案中的@AndyTurner,否则我将相应地更改代码。SonarJava应该完全能够理解
isNullOrEmpty
。能否指定方法的完全限定名和库的版本(如果有)?还有SonarJava analyzer.com的版本。谢谢你修正我愚蠢的if-else语句,明白了。谢谢你修正我愚蠢的if-else语句。