当我在Java 8中使用以下代码时,我在设防中遇到了空解除引用问题:
String name = statusList.stream()
.map(s -> s.getNodeName())
.filter(n -> n.equalsIgnoreCase(temName))
.findFirst()
.orElse(null);
String parentName = name;
if (parentName == null)
{
// if null code
}
else {
// Not Null code
}
我正在验证值是否为null
。为什么仍然出现错误?如何解决此问题以满足强化需求?
更新:
我试图获取堆栈跟踪,但没有太多内容,
我也看到此错误:Assigned null : null (on orElse(null))
更新2:
这就是我所看到的。没有大的堆栈跟踪:
答案 0 :(得分:0)
为什么需要确切的null
?您可以使用isPresent()
Optional<String> optionalName = statusList.stream()
.map(s -> s.getNodeName())
.filter(Objects::notNull) // to avoid nulls in comparation
.filter(n -> n.equalsIgnoreCase(temName)) // I assume temName is not null
.findFirst();
if (name.isPresent()) {
//not null code
} else {
//null code
}