SonarQube 8.1.0在访问值之前抱怨调用“ Optional#isPresent()”

时间:2019-12-27 15:05:30

标签: java sonarqube optional

我收到错误消息:“在访问值之前调用“ Optional#isPresent()””

但是正如您在图像中看到的那样,在该行的前面有一个isPresent()检查。

这是SonarQube的错误吗?

-

enter image description here

1 个答案:

答案 0 :(得分:2)

ernest_k是正确的:(谢谢!)

  

严格来说,当您第二次调用component.getId()时   时间,您不能假设它将给出相同的Optional实例   您调用了isPresent()。

所以我将代码更改为:

Optional<String> optionalId = component.getId();
if (optionalId.isPresent()) {
     String id = optionalId.get();
     // ...
}