java - SonarQube 8.1.0 提示在访问该值之前调用 "Optional#isPresent()"

标签 java sonarqube option-type

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

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

这是 SonarQube 的错误吗?

-

enter image description here

最佳答案

ernest_k 是对的:(谢谢!)

Strictly speaking, when you call component.getId() for the second time, you can't assume that it will give the same Optional instance you called isPresent() on.

所以我将代码更改为:

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

关于java - SonarQube 8.1.0 提示在访问该值之前调用 "Optional#isPresent()",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59502557/

相关文章:

java - 运行 Android 应用程序会产生 java.lang.NoClassDefFoundError : retrofit. RestAdapter$Builder

java - 无法使用最新版本启动 Sonarqube 服务器

swift - 如何创建带有设置大小的 3D 可选数组

java - 如何比较列表中的最小值?

generics - 初始化器作为 Swift 中转换为新类型的一种方式

java - 等待监听器完成任务并获取另一个函数的结果 [Android]

java - 为名称数组创建快速排序

java - CodeModel 修饰符顺序

angular - 在 Sonar 代码覆盖率分析测试中排除文件 - Angular 7

java - 在外部类java中使用内部类对象