1、a.equals(b)
解决方法:a必须确认不为null才能这么使用,如果a没办法确认是否为null,则可以使用Objects.equals(a,b)来比较,该方法内部会对null进行判断(前提条件是对象a和b都实现了hashcode和equals方法,不然比较会出问题,String对象默认实现了这两个方法)
2、if(a) a.toString() a.getXXX
解决方法:必须确认a不为null才能调用该方法进行逻辑判断
3、a.size() > 0
解决方法:本来是要根据查询数据库返回的list集合来进行操作,但是返回的a可能为null,所以判断a != null && a.size >0 才能对a这个list进行下一步操作,也可以判断a == null抛出异常,或者使用jdk1.8的Optional类来对list对象进行封装,使用前调用isPresent方法判断是否为空
4、参数值是 Integer 等包装类型,使用时因为自动拆箱出现了空指针异常
解决方法:将包装类型赋值给基本类型变量时记得判断是否为null
5、诸如 ConcurrentHashMap 这样的容器不支持 Key 和 Value 为 null,强行 put null 的 Key 或 Value 会出现空指针异常
原文:https://www.cnblogs.com/alijun5201314/p/12840767.html