2021-09-17
java8新特性Optional使用
- 一、简介
- 二.API
- 三.使用案列
一、简介
JAVA8 新特性 Optional 防止空指针的类
二.API
/** 一、Optional 容器类:用于尽量避免空指针异常* Optional.of(T t) : 创建一个 Optional 实例* Optional.empty() : 创建一个空的 Optional 实例* Optional.ofNullable(T t):若 t 不为 null,创建 Optional 实例,否则创建空实例* isPresent() : 判断是否包含值* orElse(T t) : 如果调用对象包含值,返回该值,否则返回t* orElseGet(Supplier s) :如果调用对象包含值,返回该值,否则返回 s 获取的值* map(Function f): 如果有值对其处理,并返回处理后的Optional,否则返回 Optional.empty()* flatMap(Function mapper):与 map 类似,要求返回值必须是Optional*/
三.使用案列
public class TestOptional {@Testpublic void test4(){Optional<Employee> op = Optional.of(new Employee(101, "张三", 18, 9999.99));Optional<String> op2 = op.map(Employee::getName);System.out.println(op2.get());Optional<String> op3 = op.flatMap((e) -> Optional.of(e.getName()));System.out.println(op3.get());}@Testpublic void test3(){// 若 t 不为 null,创建 Optional 实例,否则创建空实例Optional<Employee> op = Optional.ofNullable(new Employee());// isPresent() : 判断是否包含值if(op.isPresent()){System.out.println(op.get());}// orElse(T t) : 如果调用对象包含值,返回该值,否则返回tEmployee emp = op.orElse(new Employee("张三"));System.out.println(emp);// orElseGet(Supplier s) :如果调用对象包含值,返回该值,否则返回 s 获取的值Employee emp2 = op.orElseGet(() -> new Employee());System.out.println(emp2);}@Testpublic void test2(){/*Optional<Employee> op = Optional.ofNullable(null);System.out.println(op.get());*/// Optional<Employee> op = Optional.empty();
// System.out.println(op.get());}@Testpublic void test1(){Optional<Employee> op = Optional.of(new Employee());Employee emp = op.get();System.out.println(emp);}@Testpublic void test5(){Man man = new Man();String name = getGodnessName(man);System.out.println(name);}//需求:获取一个男人心中女神的名字public String getGodnessName(Man man){if(man != null){Godness g = man.getGod();if(g != null){return g.getName();}}return "苍老师";}//运用 Optional 的实体类@Testpublic void test6(){// Optional.ofNullable(T t):若 t 不为 null,创建 Optional 实例,否则创建空实例Optional<Godness> godness = Optional.ofNullable(new Godness("林志玲"));Optional<NewMan> op = Optional.ofNullable(new NewMan(godness));String name = getGodnessName2(op);System.out.println(name);}public String getGodnessName2(Optional<NewMan> man){return man.orElse(new NewMan())// 如果存在则返回值,否则返回other 。.getGodness().orElse(new Godness("苍老师"))// // orElse(T t) : 如果调用对象包含值,返回该值,否则返回t.getName();}
}
2021-09-17相关推荐
- 实习日志 (2021.09.13)
2021.09.13星期一 今天把之前的算法题终于给弄明白了,并能够按照自己的思路去把他给完成,总结这个题目并不是很难,最重要的是要把链表给弄懂,一开始由于我对链表不是很熟悉,导致我在写该题目的时候花 ...
- 橘子CPS联盟操作手册2021.09
橘子CPS联盟操作手册2021.09 目录 橘子CPS联盟操作手册2021.09 橘子CPS联盟是干嘛的 橘子CPS基本操作流程 PC端操作 1.注册 2.登陆 3.渠道管理 4.分享网站 5.分享网 ...
- [2021.1.17多校省选模拟4]T1(莫比乌斯反演/组合数学/枚举倍数)
[2021.1.17多校省选模拟4]T1 一般人都会想着去枚举直线的斜率,但是枚举斜率之后就会产生多条直线,并且这些直线的长度不一,难以快速求解,所以我们考虑换一种方法枚举. 枚举最远点对的横纵坐标之 ...
- 2021.09.27 MySQL笔记
2021.09.27 MySQL笔记 文章目录 2021.09.27 MySQL笔记 一.展示当前存在的所有数据库 二.使用(选中)一个数据库 三.创建一个数据表 四.查询并展示该数据库内的所有数据表 ...
- 2021.03.17 pokémon小游戏开发记录与周总结
2021.03.17 pokémon小游戏开发记录与周总结 此篇仅包含部分项目代码,只是个人的学习总结. 文章目录 2021.03.17 pokémon小游戏开发记录与周总结 前言 一.前期准备 二. ...
- 2021.09青少年软件编程(Python)等级考试试卷(三级)
2021.09青少年软件编程(Python)等级考试试卷(三级) 一.单选题(共25题,每题2分,共50分) 1.使用map函数可以实现列表数据元素类型的转换,而无需通过循环.则将列表L=['1',' ...
- AWD平台搭建(Cardinal 从零开始) 2021/11/17
#Time 2021/11/17 因为之后要在校内组织AWD比赛,所以在github上找了一会,试了试最多star的,虽然说好用但是没有好康的界面,全是一堆代码感觉很枯燥,于是最终还是选择了使用Car ...
- 2021.09.24—皮皮与帅帅的第二篇情话
2021.09.24我们小情书的第二天 每天晚上,小兔子都会一个人来到溪水边,坐在地上数着星星.而且他个人也非常喜欢一闪一闪的东西.对于小兔子来说,每颗星星都是特别的,于是她就给每颗星星都起了一个可爱 ...
- 西安尚学堂练习09.17|Java编程笔试面试题
下列哪些类型能被throw语句抛出? A. Error B. Exception C. Throwable D. Object [解]注意Error也是可以被throw的,只是通常Error出现程序就 ...
- 《惢客创业日记》2021.09.15(周三)套路的最高境界
今天,凉粉儿给我发了一段她想的关于惢客的宣传词:"你被套路过吗?想不再被套路吗?上惢客."总结一句话是"不被套路上惢客".我觉得能把惢客跟套路联系在一起,很贴切 ...
最新文章
- Exchange Log Collector Script
- win2008 IIS7中启用JS的gzip压缩的方法
- Iperf源代码分析(八)
- java程序员高薪持续的原因有哪些
- mel滤波器组频率响应曲线_非常好的滤波器知识总结,值得一看!
- 计算机专业Java必读书单,高清PDF电子版下载
- mac m1 eclipse汉化操作
- matlab 取符号函数,Matlab 符号表达式和符号函数的操作
- range在python中什么意思_python中range什么意思?
- amesim子模型_AMESim进行实际物理建模及建模的一般过程
- oracle plsql 绑定变量值,dbms_sqltune解析SQL的BIND_DATA绑定变量值
- 2022.09 青少年软件编程(图形化) 等级考试试卷(四级)
- 让人春分日 哈工科教115166.弹珠游戏
- 用遗传算法求解TSP问题
- js var多等式变量的定义
- 使用zip,出现“不可预料的压缩文件末端”问题
- 介绍一下Token?
- 有效的字母异位词 四种解法(Python)
- 花裤衩-nx-admin好多轮子-动态路由
- valueOf()方法