提问者:小点点

sonar规则“可能的空指针异常”


我在我的声纳中发现了一个问题,我不知道如何解决。

我的错误是:

Possible null pointer dereference in mypackage.myMethod(String) due to return value of called method

一开始是:

 response.getBody().getData();

所以我做的是:

return (response != null && response.getBody() != null) ? response.getBody().getData() : null;

但是错误仍然存在。

我误解了错误吗??我该如何解决?


共1个答案

匿名用户

每次调用方法时,您可能会得到不同的结果。您可能知道每次都会得到相同的结果,但Sonarqube不会。

response. getBody()分配给变量,这样您就不必再次调用它:

if (response != null) {
  var body = response.getBody();
  if (body != null) {
    return body.getData();
  }
}
return null;

您可以使用可选的,或者:

return Optional.ofNullable(response).map(ResponseType::getBody).map(BodyType::getData).orElse(null);