Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.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 声纳';可能的空指针解引用';几乎每个方法调用都出错_Java_Sonarqube - Fatal编程技术网

Java 声纳';可能的空指针解引用';几乎每个方法调用都出错

Java 声纳';可能的空指针解引用';几乎每个方法调用都出错,java,sonarqube,Java,Sonarqube,我正在使用Spring的RestTemplate从远程服务获取一些数据: ResponseEntity<....> result = restTemplate.exchange(....); Sonar不喜欢这段代码,几乎所有这些方法调用都会报告“可能的空指针解引用”错误。似乎我需要对几乎每个返回值进行空检查 这使得我的代码有太多的空检查 这可以避免吗?使用java 8中的可选: HttpResponse应该是result的类型,Headers应该是getHeaders()的返回类

我正在使用Spring的RestTemplate从远程服务获取一些数据:

ResponseEntity<....> result = restTemplate.exchange(....);
Sonar不喜欢这段代码,几乎所有这些方法调用都会报告“可能的空指针解引用”错误。似乎我需要对几乎每个返回值进行空检查

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


这可以避免吗?

使用java 8中的
可选

HttpResponse
应该是
result
的类型,
Headers
应该是
getHeaders()
的返回类型,依此类推

您可以使用除
orElse()以外的其他终止运算符。


是的,关掉我手里没有的支票。它的团队级别设置。然后确保你过早地避免NPE。
result.getHeaders().getContentType().getType()
result.getBody()
result.getHeaders().getContentType().getSubtype()
String contentType = Optional.ofNullable(result)
  .map(HttpResponse::getHeaders)
  .map(Headers::getContentType)
  .map(ContentType::getType)
  .orElse(null);
.orElseGet(() -> someOtherProcess());
.orElseThrow(() -> new RuntimeException("Content Type was Null"));