栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

字段为null时,get方法取值抛出空指针异常java.lang.NullPointException解决方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

字段为null时,get方法取值抛出空指针异常java.lang.NullPointException解决方法

字段为null时,get方法取值抛出空指针异常java.lang.NullPointException解决方法

今天打码的时候,做一个取Integer值字段,万万没想到该字段会有存在null值得情况,结果给抛异常了,实在给人留下了不好的印象。

那行吧,就用了Optional下的ofNullable方法来判断解决问题。
例如:

    A  a = new A;
    int age = a.getAge();
    System.out.println("年龄是:"+ age);

如果Age为null时,执行到第二行代码就会抛出null指针异常的情况
解决:

   A  a = new A;
   Optional age = Optional.ofNullable(a.getAge());
   System.out.println("年龄是:"+ age.hashCode);

原理:
我们来看一下 ofNullable的源码

该方法也比较容易理解:
执行ofNullable()方法,如果T对象为空,执行empty()方法;不为空,执行of(value)方法;
而empty()方法又是怎么样的呢,我们也看源码

即:执行empty()时,返回一个空对象Optional。注意:空对象不等于null,是不一样的
以上,可见Optional.ofNullable()可解决该问题(取值时通过hashCode()来取即可)
本来感觉到此为止即可解决问题…
奈何该方法是java 8才有的方法…
而服务器上用的jdk 1.7…

----------------------------------------------分割线--------------------------------------------

那行吧,那就用if else来随便解决得了…
哪知道,if else来判断也有讲究的…
例如:

(还是Age为null的情况)

  A  a = new A;
     if(a.getAge() != null){
	    int age = a.getAge();
	    System.out.println("年龄是:"+ age);
    }
抛异常了...

原因:在if判断条件里边,执行a.getAge()就抛异常了,都还没来得及和null做判断,结果显而易见

解决:

  A  a = new A;
 if(null != a.getAge()){
    int age = a.getAge();
    System.out.println("年龄是:"+ age);
}
正常运行...

最终建议:以后在做跟null做条件判断时应该把null放在条件前面,把变量还在后边

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/390145.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号