为啥使用stream操作空集合不会空指针

为啥使用stream操作空集合不会空指针


阅读全文
请先 登录 后评论
  • 0 关注
  • 0 收藏 97 浏览
  • 略问用户 提出于 2020-10-22 17:37:52

8 个回答

xxxxxa
是我傻还是你傻?
请先 登录 后评论
xxxxxa
如果数组初始化为null,那么根据在.stream()时就会抛出空指针异常,因为stream()方法首先构建一个Spliterators对象,Spliterators.spliterator第一行就调用了Objects的requireNonNull方法判断空指针。如果实现了初始化不为null但是操作list里面的item依然不报空指针的原因应该是实际在调用ReferencePipeline的peek方法时需要将集合封装到Sink对象中,最终在Sink对象的accept()方法中对item中的元素进行操作,但是在传入数据到Sink对象之前会调用Sink对象的begin()方法判断集合的size,如果size=0也就是空集合,那么就不会执行后续的accept()方法。应该是这样的
请先 登录 后评论
xxxxxa
我可以这样理解吗
请先 登录 后评论
xxxxxa
你那个是空管子,后续操作根本没有执行
请先 登录 后评论
xxxxxa
你理理清楚空指针是什么,对象已经实例化了,哪来的空指针异常呢,a = [] ,a 是一个空数组,你能说 a 是空指针?
请先 登录 后评论
xxxxxa
空集合不是空对象,为啥会报空指针?
请先 登录 后评论
xxxxxa
如果是null呢
请先 登录 后评论
xxxxxa
这个问题问得好
请先 登录 后评论