Fortify:Java 8的空取消引用

时间:2019-11-15 14:55:09

标签: java java-8 fortify

当我在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:

这就是我所看到的。没有大的堆栈跟踪:

enter image description here

1 个答案:

答案 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
}