【发布时间】:2020-04-17 12:44:09
【问题描述】:
我收到错误消息:“在访问值之前调用“Optional#isPresent()””
但正如您在图片中看到的那样,在该行之前有一个 isPresent() 检查。
这是 SonarQube 的错误吗?
-
【问题讨论】:
-
@amer
Optional没有getId()方法。 -
严格来说,当您调用
component.getId()第二次 时,您不能假设它会给出与您调用isPresent()相同的Optional实例.我无法检查这是否解决了它,因为我的并没有提出问题 -
如果@ernest_k 的陈述成立,应该可以通过提取一些
Optional<String> id = component.getId();来预防 -
@amer 如果您想要一个替代值,那么可以。但是,如果您想要分支控制流,那么这是不可能的。
-
另一方面,在类中定义
Optional类型属性是一种不好的做法。我想知道getId是否只是一个吸气剂,为什么 Sonar 也不会警告你。