NPE出现的常见原因:
1、空对象,访问空对象的方法或属性;
2、空数组,访问空数组的size()或内容;
3、基本类型,自动拆箱;如函数返回int,内部实际是Integer,如果是null时,则NPE。
4、数据库查询的结果可以是null;eg:mybatis的Emp emp = baseMapper.selectById(“0”),使用错误的查询条件。
5、级联调用容易出现NPE。eg:obj.getA().getB().getC();
6、数组不为空,但对象的某个属性为空。
解决方法:提前检查。
1、String类:
比较时,常量在前;
转换时,使用String.valueOf();
2、对象:
ObjectUtils.isEmpty(field);
对数据库的查询结果先判断是否为空。
3、数组:
CollectionUtils.isEmpty(requestlist);
4、自动拆箱文章来源:https://www.toymoban.com/news/detail-474405.html
实践
1、单元测试中的对象例子;
2、检查程序中的selectById();
3、检查日志的NPE错误。文章来源地址https://www.toymoban.com/news/detail-474405.html
到了这里,关于NPE错误的场景原因和解决方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!