mybatis判断list为空或null_JAVA8之妙用Optional解决判断Null为空的问题

本文介绍了如何使用JAVA8的Optional类优雅地处理mybatis中可能出现的list为空或null的情况,避免NullPointerException。通过讲解Optional的API,如of、ofNullable、orElse、orElseGet、orElseThrow、map和flatMap等方法,展示了如何在实际开发中应用Optional进行链式编程,提升代码的可读性和优雅性。同时,文中提供了多个实战示例,对比了传统写法和JAVA8新写法的差异,帮助读者理解Optional在解决NPE问题上的优势。
摘要由CSDN通过智能技术生成

引言

在文章的开头,先说下NPE问题,NPE问题就是,我们在开发中经常碰到的NullPointerException.假设我们有两个类,他们的UML类图如下图所示

56a8406e388a73525a967c19e2bd517f.png

在这种情况下,有如下代码 user.getAddress().getProvince();

这种写法,在user为null时,是有可能报NullPointerException异常的。为了解决这个问题,于是采用下面的写法

adc2b7e6b2fb1c4d6176f1bd14e6b15f.png

这种写法是比较丑陋的,为了避免上述丑陋的写法,让丑陋的设计变得优雅。JAVA8提供了Optional类来优化这种写法,接下来的正文部分进行详细说明

API介绍先介绍一下API,与其他文章不同的是,本文采取类比的方式来讲,同时结合源码。而不像其他文章一样,一个个API罗列出来,让人找不到重点。Optional(T value),empty(),of(T value),ofNullable(T value)这四个函数之间具有相关性,因此放在一组进行记忆。先说明一下,Optional(T value),即构造函数,它是private权限的,不能由外部调用的。其余三个函数是public权限,供我们所调用。那么,Optional的本质,就是内部储存了一个真实的值,在构造的时候,就直接判断其值是否为空。好吧,这么说还是比较抽象。直接上Optional(T value)构造函数的源码,如下图所示

d3d991d6d579c96c6316d3dc9a4ff16e.png

那么,of(T value)的源码如下:

5e2bc016d5617089d148c484cb0ccbf0.png

也就是说of(T value)函数内部调用了构造函数。根据构造函数的源码我们可以得出两个结论:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值