stream流当中为什么e-> e.getGroState() == 1会报错,而e-> e.getGroState() == null不会报错
时间: 2024-01-11 18:03:24 浏览: 67
centos-stream-release-8.5-2.el8.noarch.rpm
在 Java 8 Stream 中,调用对象的方法时,如果该对象是 null,就会抛出 NullPointerException 异常。因此,当集合中存在 null 元素时,调用 `e.getGroState()` 方法就会出现空指针异常,导致程序报错。
根据你提供的代码,`e -> e.getGroState() == 1` 会报错的原因是因为 `projectAndTeam` 列表中存在为 null 的元素,导致调用 `e.getGroState()` 方法时抛出了空指针异常。而 `e -> e.getGroState() == null` 不会报错的原因是因为它不是调用 `getGroState()` 方法,它只是判断 `getGroState()` 是否为 null,即使 `e` 为 null,也不会出现空指针异常。
为了避免空指针异常,可以在调用 `e.getGroState()` 方法之前先判断 `e` 是否为 null,例如:
```
List<GetProjectAndTeamOutBO> collectTrue = projectAndTeam.stream()
.filter(e -> e != null && e.getGroState() == 1)
.collect(Collectors.toList());
```
这样就可以避免空指针异常了。
阅读全文