特别是大团队协作开发,别人提供的接口或方法
正常情况下肯定不会返回null
可是偏偏生产环境就操作出了null场景(生产环境操作一般都比较骚)
然后就NPE
然后大领导就在群里叫:是谁,搞出来的NPE
然后NPE就在你的绩效、年终奖体现出来了
标准NPE场景
对象.属性 (对象由于骚操作变成了null)
万恶的NPE
java.lang.NullPointerException
如果你的代码经常出现NPE,工资肯定不会高多少。(已经工资很高但也经常NPE的同学赶紧学习学习)
NPE是一个低级问题,平时我们就要养成防NPE的好习惯。
下面我介绍一个防NPE神器。
环境
jdk1.8以上、idea、java程序员
使用 JDK8 的 Optional 类来防止 NPE 问题
某某java规范宝典里也提到了
案例分析
集合遍历的NPE
解决办法1,传统的方式
解决办法2,优雅的Optional
list集合
字符类型
map
对象
如果返回的是集合,建议orElse(空集合),这样防NPE不错。
源码分析Optional
知识准备:泛型方法、泛型类 (有空我也要复习下)
Optional 类
Optional.ofNullable 方法
返回的Optional<T>
orElse
直接返回的值对象
可恶的异常
使用optional获取对象,可以节省很多空指针的判断
optional总结
集合类型参数建议都 Optional.ofNullable(集合).orElse(Collections.emptyList())
需要if-else,也可以String fruit = Optional.ofNullable(str).orElse("Banana");
没有默认值的,就用Optional.isPresent()去NPE判断吧
注释:内容来自微信公众号我是程序汪