使用Java8的新特性Optional,再取属性的时候避免NullPointException,代替判空操作

return Optional.ofNullable(user).map(User::getName).orElse(null));
代替
if(user!=null){ return user.getName(); }else{ return null; }
提高代码的可读性

可以追溯一下Optional的map方法的源码

如果当前Optional对象没有值,返回一个empty(),继续追溯empty()源码的话,其实他就是new一个Optional()

其实Optional的源码还是挺好读懂的,关于ofNullable()、orElse()、get()、of()等方法都可以自己去看看,一看便会

踩坑
List<Employee> employees = helloMapper.selectByExample(example); //
利用JDK8新特性简化判空操作(不可用,这里集合不是null,是长度为0) return Optional.ofNullable(employees).map(
list-> list.get(0)).orElse(null);
这里如果查询数据库没有值的话,会报错,下标越界异常
因为查询数据库没有值的话,返回的集合是空集合,长度为0,而不是一个null
也就是在map方法中
if (!isPresent()) return empty();
并不满足这个,继续执行就会发现集合越界了
这是今天踩的坑,记住查询数据库没有结果,
集合:返回的是空集合,并不是null

技术
©2019-2020 Toolsou All rights reserved,
详解ubuntu14.04如何设置静态IPQCustomPlot系列(5)-实时动态曲线比尔·盖茨:疫情后彻底恢复正常可能要到2022年末华为认证HCIA-AI人工智能Python基础知识整理笔记百度、阿里、腾讯内部岗位级别和薪资结构,附带求职建议!Jsp+Ajax+Servlet+Mysql实现增删改查(一)2021年1月程序员工资统计,平均14915元Faster RCNN系列算法原理讲解(笔记)经典算法-递归(生兔子案例)