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

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

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

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

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

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

   A  a = new AOptional<Integer> 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 Aif(a.getAge() != null){
	    int age = a.getAge()System.out.println("年龄是:"+ age);
    }
抛异常了...

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

解决:

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

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

  • 11
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值