被怼的莫名奇妙的,这么写会出空指针?

2022-03-19 13:10:31 +08:00
 cxsz
这个我怎么想都觉得不可能出空指针,那不这么写有啥好方法




说 java 代码中“.”的使用不要 xx.xx.xx 这种写法,但这个地方用 stream 难道不是最好的写法
3565 次点击
所在节点    Java
24 条回复
chainsR
2022-03-21 09:19:51 +08:00
要过滤的,不要相信数据
rehoni
2022-04-27 16:52:55 +08:00
肯定不是 stream 的问题,就算你 foreach 也会 npe 的,最好确保数据可靠性,给你找了个写法
[如果整个 list 可能为 null] 用 Optional 包装一下
[如果 list 中的某个 object 可能为 null] 用 .filter(Objects::nonNull)

List<Person> personList = new ArrayList<>();
personList.add(new Person());
personList.add(null);
personList.add(new Person("小明", 10));
personList.add(new Person("小红", 12));

Optional.ofNullable(personList).orElseGet(() -> {
System.out.println("personList 为 null !");
return new ArrayList<>();
}).stream().filter(Objects::nonNull).forEach(person -> {
System.out.println(person.getName());
System.out.println(person.getAge());
});
cxsz
2022-04-28 15:24:47 +08:00
@rehoni #22 好的,谢谢。 已经一个月过去了这个帖子是怎么被翻出来的。。。。
rehoni
2022-04-29 08:12:11 +08:00
@cxsz 。。。感觉 java 话题下排的很靠前哇。。可能这话题没多少人发帖子吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/841447

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX