上下观古今,起伏千万途。这篇文章主要讲述Java8新特性Optional类在处理空值判断场景的应用 回避空指针异常 编写健壮的应用程序相关的知识,希望能为你提供帮助。
一、序言
空值异常是应用运行时常见的异常,传统方式为了编写健壮的应用,常常使用多层嵌套逻辑判断
回避空指针异常。java8新特性之Optional
为此类问题提供了优雅的解决方式。
广大程序员朋友对空值异常刻骨铭心,因此Optional
一经推出,广受赞誉。
二、问题复原
(一)素材准备
public class LoginUser implements UserDetails
private Long deptId;
private String token;
private Long loginTime;
private Long expireTime;
private String ipaddr;
private String loginLocation;
private String browser;
private String os;
private SysUser user;
public class SysUser
private Long userId;
private Long deptId;
private String userName;
相关
Setter
和Getter
方法自行添加。(二)模拟演示 1、传统方式
/**
* 普通嵌套判断方式判断空值
*
* @param loginUser 登录用户体
* @return 用户ID
*/
public Long getUserId(LoginUser loginUser)
if (loginUser!=null)
SysUser user = loginUser.getUser();
if (user!=null)
return user.getUserId();
return null;
方法参数传递的变量
loginUser
使用前不确定是否为空,因此需要逻辑判断;user
变量使用前不确定是否为空,因此需要逻辑判断。两层逻辑判断之后,方能安心调用获取UserId
方法。显而易见,当对象嵌套层次较深时,需要做的逻辑判断越多,代码越复杂。
2、优雅方式
/**
* 通过Optinal处理空值判断
*
* @param loginUser 登录用户体
* @return 用户ID
*/
public Long getUserId(LoginUser loginUser)
return Optional.ofNullable(loginUser)
.map(LoginUser::getUser).map(SysUser::getUserId).orElse(null);
在满足同样需求的前提下,使用
Optional
类代码量更少,业务逻辑更清晰。Optional
使用方法引用的语法,属于Lambda表达式
的一种。三、小结
【Java8新特性Optional类在处理空值判断场景的应用 回避空指针异常 编写健壮的应用程序】本文介绍了Optional类在处理空值判断场景的应用,通过对比的方式,将Optional的优点展现出来。从场景入手学技术比单调的技术讲解更有趣味。
推荐阅读
- #yyds干货盘点#Git学习-如何修改已经提交的记录
- docker 批量删除 none 镜像
- #yyds干货盘点#在element-ui中使用dialog的时候只有遮罩,看不见内容的问题
- Redis发布订阅原理与实践
- Mac系统安装ELK环境踩坑记录
- 一文掌握oracle19c之离线情况下命令行安装和建库(下)- 本文干货满满,记得收藏哈
- ??苏州程序大白解析Linux 中的虚拟网络接口??《??记得收藏??》
- uni-app技术分享| uni-app常见问题
- 一种简单的OpenHarmony开发环境搭建