【发布时间】:2022-07-11 23:33:55
【问题描述】:
我刚刚偶然发现了 IntelliJ 生成的警告,我想知道,是我遗漏了什么还是 IntelliJ 只是忽略了以下 or 子句的右侧?
示例代码:
Random random = new Random();
public void test(){
Optional<String> a = Optional.ofNullable(random.nextInt(10)>5?"something":null);
Optional<String> b = Optional.ofNullable(random.nextInt(10)>5?"something":null);
if(a.isPresent() || b.isPresent()){
log.info(a.orElse(b.get()));
}
}
警告'Optional.get()' without 'isPresent()' check 显示在b.get() 上。
我知道 or 是以一种懒惰的方式从左到右评估的,但我会假设 a 或 b 必须存在一个值,因为它在 if 中明确检查。
这是 IntelliJ 的静态代码分析中的错误吗?
【问题讨论】:
标签: java intellij-idea optional