为了避免空指针调用,我们经常使用if (obj != null)
,导致项目存在大量判空代码,繁杂而丑陋。这也是基于保护程序的本能。怎样规避这个问题呢?
判空前,先分清楚:
- null:有效有意义的返回值
- null:无效有问题的返回值
有效有意义的null
null 作为一个合理的值(缺考是 null,零分是 0),去查询数据库时,null 表达了“空”的概念
- 返回类型为 collections,返回结果是空,可以返回空的collections(empty list)
- 返回类型是 POJO,就使用空参构造返回一个空对象(new obj()),看业务决定
无效有问题的null
null作为一个不合理的参数,就应该明确地中断程序,并抛出相关异常信息
比如:user_id 作为一个必传的参数,但是传过来一个 null,就不应该了
在 MySQL 中,null和空值有着不一样的意义
- null 需要额外的空间来记录 ta 是 null
length(null) --null; length('') --0; length('123') --3
- 查询:查 null 用
is null
;查''
用!=
使用 select count(*) 查询会把 null 也算进去