版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_41751625/article/details/89913940
在我们平常的开发中,最常见的异常莫过于NullPointerException,这个臭名昭著的空指针异常突然就会冒出来,号称是一百万美元的损失,为了防止这个异常的产生,我们平常在写程序的时候经常会进行非空的判断,然后才执行我们的逻辑。下面来看一个例子。
假如有下面这样的一段代码。
String result=user.getUserInfo().getBodyInfo().getDesc();
很明显,这一段代码很容易就会产生空指针,中间的任何一个为空都会产生空指针。那么我们通常会这样做
if(user!=null){ UserInfo userInfo=user.getUserInfo(); if(userInfo!=null){ BodyInfo bodyInfo=userInfo.getBodyInfo(); if(bodyInfo!=null){ return bodyInfo.getDesc(); } } } return null;
加上了这一大堆的判断,代码显的又臭又长,为了代码的简介,java8提供了一个Optional类,简单的来说,这个类的设计初衷就是为了避免空指针异常中引入的大量判空。
return Optional.ofNullable(user).map(User::getUserInfo).map(UserInfo::getBodyInfo).map(BodyInfo::getDesc).orElse(null);
经过Optional改造之后,只需要一行就可以解决,是不是清爽干净多了。