map.get(key)出现NPE问题以及解决方案

  平时使用Map时都会给定里面的元素类型,在拿到数据后用Optional判空处理,比如以下形式:

String value = Optional.ofNullable(mapData.get("xxx")).orElse("");

  一般情况下没出现问题,但是今天从mongodb拿到数据后,代码走到map.get(key)报了NPE,一开始让人有点懵逼,我做了处理啊,我是谁,我在哪?
  后边才发现拿数据的接口返回的是List<Map>类型,Map并没有指定类型,但是我获取其中对应的map是用String接收的,String是一种引用类型,此时会将拿到的数据转化成String对象然后再进行判空,重点就是这个转化的过程,类似于一个装箱的过程,就比如 int>Integer的转化,需要使用Integer.valueOf()方法,对应的,String会使用String.valueOf()方法进行转化,此时就成了String.valueOf(null),就会报出NPE;
  对于这个问题,我目前使用Object进行接收,避免了装箱过程,在Optional处理完后再进行转化,其他类型同理操作即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值