前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >常用的 list.isEmpty() 为何突然报null?

常用的 list.isEmpty() 为何突然报null?

作者头像
用户9919783
发布2022-07-26 11:29:43
4890
发布2022-07-26 11:29:43
举报
文章被收录于专栏:后端从入门到精通

今天项目,常用的方法突然报了个null,随手记录。

以前判断list集合是否为空,会用list.isEmpty()判断是否为true,为true则业务继续进行下去,但今天这个方法报了null,为什么呢?

业务场景模拟:

创建一个父类,在父类里定义一个子类的list,main方法里存储父类id,但定义的list不给他赋值,之后再用father.getSonList()会报空异常。但用CollectionUtils的判断则不会报错。

代码如下:

原因:

从源码可以知道,ColletionsUtils里面也判断了isEmpty,但为什么他没报错呢?

我们都知道&&和||都是短路模式,&&必须两个都为正确(true),才会返回正确,只要第一个为false,则下面的不执行,直接返回错误。而||则是只要第一个返回true,则后面的就不再执行。

所以原因找到了:他是在先判断isEmpty之前判断的是否为null,并且用的短路模式,||当前面的为正确(true),则后面的isEmpty则不会运行,直接返回正确,从而业务能正常运行下去,不会报空异常。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 后端从入门到精通 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档