日志排查时发现了一个报错:“No value present”
What?这是什么鬼,没印象啊。什么不存在,忍不住脑补脑补脑补,脑补没成功。
查了下资料,再次排查了一下代码。其它地方都加了,就这地方忘了。又是一个忍不住狂扇自己系列(嗯,是个狠人)…
想了想,还是记录一下吧。
都知道java8中引入了很多新特性,其中就包括Optional :有效的避免了传统的空指针,想一想曾经你的if else 非空判断,再对比下旁边这位。
不由得感叹:优雅简便,卧槽🐂🍺(美好的一天从口吐芬芳开始…)
因此很多情况下都会选择使用Optional,但是往往最容易忽略掉的一点就是:忘记调用该对象的isPresent()方法判断是否存在就直接调用get()方法去获取。
so,杯具就产生了:“No value present ”,开心不开心?
博主还专门测试了一下,一点都不开心。
内心:(总觉得他应该是有值的…总觉得,总觉得。呸,渣男,万一没值呢。不要你觉得,我要我觉得!)
如上图中,我用空对象来模拟测试,测试结果如下:
这里很明显可以看到,是调用get()方法时抛出的异常。
为什么会抛出这个异常?如何解决,准确来说是如何避免这种情况呢?
所以这种情况怎么处理呢?
使用Optional.ofNullable().orElse();
注意:字符串类型不要使用这种方法判定,不然就是坑。“ ”会判为非空
居然是这个问题。我…
不说了,面壁思过去了
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/115779.html