【发布时间】:2021-08-04 22:39:10
【问题描述】:
我有一个简单的案例,但很难理解哪里出了问题,似乎检查了可选,但是 Spotbugs 认为这是空指针取消引用。也试过 orElseThrow(),同样的事情。
package com.bam;
import java.util.HashSet;
import java.util.Optional;
import java.util.Set;
import org.jetbrains.annotations.NotNull;
public class Check {
@NotNull
public Integer check() {
Optional<Integer> integer = find(3);
if (integer.isPresent()) {
return integer.get(); // here Spotbugs finds Null pointer dereference
}
throw new IllegalStateException("number not found!");
}
private Optional<Integer> find(Integer number) {
Set<Integer> set = new HashSet<>();
set.add(1);
set.add(2);
return set.stream()
.filter(integer -> integer.equals(number))
.findFirst();
}
}
【问题讨论】:
标签: java null optional dereference spotbugs