当前位置: 首页 > 知识库问答 >
问题:

Sonar几乎在每个方法调用上都出现“可能的空指针取消引用”错误

太叔凌龙
2023-03-14
ResponseEntity<....> result = restTemplate.exchange(....);
result.getHeaders().getContentType().getType()
result.getBody()
result.getHeaders().getContentType().getSubtype()

这使得我的代码有太多的空检查。

这能避免吗?

共有1个答案

匡安宜
2023-03-14

使用java 8 JavaDocs中的optional:

String contentType = Optional.ofNullable(result)
  .map(HttpResponse::getHeaders)
  .map(Headers::getContentType)
  .map(ContentType::getType)
  .orElse(null);

httpresponse应该是result的类型,headers应该是getheaders()的返回类型,依此类推。

您可以使用orelse()以外的其他终止运算符:

.orElseGet(() -> someOtherProcess());
.orElseThrow(() -> new RuntimeException("Content Type was Null"));
 类似资料:
  • 由于上面代码上调用的方法的返回值,我得到了可能的空指针解引用。 有人能让我知道确切的问题和为什么它是一个问题吗? 提前道谢!如果需要其他细节,请告诉我。

  • 我从Sonar那里得到问题:“由于调用方法的返回值,样式-可能的空指针取消引用。findbugs:np_null_on_some_path_from_return_value。问题在lockuntil.after(new Date())上; 我试图用 但它引入了其他问题。 谁能指导一下吗?

  • 我试图用以下代码指出声纳中的关键问题: 我也做了下面的更改,但仍然不起作用 请帮忙。

  • 嗨我有以下方法: 不得不提的是,startDate和endDate是长变量。我尝试在if条件中添加null检查,也尝试使用longValue()方法,但没有结果。你知道我怎样才能解决这个问题吗?可能是fndBugs端的bug?

  • 我已经在我的sonar实例上测试了规则“正确性--可能的空指针取消引用”和“正确性--在异常路径的方法中可能的空指针取消引用”。不幸的是,以下代码从未被检测为错误 Netbeans能够正确检测到此问题,但sonar 3.6.1不能。 谢谢你的帮助

  • 此代码中可能存在空指针取消引用错误: 如何解决这些问题?