项目场景:
数量统计给对象赋值的时候发现空指针异常
问题描述
先判断从map里获取到的对象是不是空,是的话就赋值0,否则就从获取到的对象取值
pageInfo.getList().forEach(o -> {
o.setNum(ObjectUtils.isEmpty(map.get(o.getUuid())) ? 0
: map.get(o.getUuid()).getNum());
......
}
原因分析:
发现当map.get(o.getUuid)不为空, map.get(o.getUuid()).getNum()为空时就会发生空指针异常。
三元表达式另一分支时int类型0,猜测应该是将null进行拆箱成int类型的时候报的空指针
解决方案:
- 将0 改为 Integer.valueOf(0) 避免装箱拆箱(可避免空指针,但不能将null赋值为0
pageInfo.getList().forEach(o -> {
o.setNum(ObjectUtils.isEmpty(map.get(o.getUuid())) ? Integer.valueOf(0)
: map.get(o.getUuid()).getNum());
}
)
- 使用Optional 符合预期
pageInfo.getList().forEach(o -> {
o.setNum(Optional.ofNullable(map.get(o.getUuid()).getNum()).orElse(0));
......
}
)