java8之Optional(六)_闻道☞的博客-程序员宝宝

技术标签: JAVA8  

Optional 类
Optional<T> 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 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 
    @Test
    public 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());
    }

    @Test
    public void test3() {
        Optional<Employee> op = Optional.ofNullable(new Employee());
        if (op.isPresent()) {
            System.out.println(op.get());
        }
        Employee emp = op.orElse(new Employee("张三"));
        System.out.println(emp);
        Employee emp2 = op.orElseGet(() -> new Employee());
        System.out.println(emp2);
    }
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u014401141/article/details/78908843

智能推荐

c++ vector(模拟实现)_带佩亚诺余项的泰勒的博客-程序员宝宝

#include&lt;iostream&gt;using namespace std;namespace bit{ template&lt;typename T&gt; class vector { public: typedef T* iterator; public: T operator[](int i) { return start[i]; } ...

微信聊天记录没有备份可以恢复吗?吐血整理分享_数据蛙苹果恢复专家的博客-程序员宝宝

“你平时手机上的东西会备份吗?”问一百个人估计有九十九个人都会说“不会”,那么,微信聊天记录没有备份可以恢复吗?也不是不可以,只是路途会坎坷点。

pynng 超快速上手,但不保熟_ONE_SIX_MIX的博客-程序员宝宝_nng zeromq

nng 是 zeromq 的后辈,nanomsg 的 下一代的消息处理库。主要就是快,上手超快,消息收发也超快。本机 python 3.9 + pynng 0.7.1 本地环回测试 10000次1G数据,只需要1秒就可以完成。nng相比zeromq的目前发现优势,链接状态全自动维护,自动重连,掉线重连能快速恢复,数据发送不完整时能自动无限重发(默认情况),报头能全定义从而能支持http协议,速度飞快。以下4个简单完整例子_try_push_pull.py_try_pair_pair.py_tr

查找算法+思维导图_lsxa123的博客-程序员宝宝

1.总体架构在这里插入图片描述2.线性查找顺序查找:适用范围:顺序表数组、链表查找过程:从表的一段开始,向另一端逐个按给定值kx与关键码进行比较。若找到,查找成功,并给出数据元素在表中的位置;若整个表检索完之后,仍未找到与kx相同的关键码,则查找失败。折半查找(二分查找):使用范围:查找表为顺序存储结构且表中的元素按关键码有序查找过程:取查找表中间的元素作为比较对象,若给定值与...

Oracle 安装失败后如何卸载干净 以及 登陆时 ORA-01017_我是祁名烦的博客-程序员宝宝

我在安装失败了两次后,终于安装成功。期间第一次遇到的问题忘记了,第二次是因为安装路径上有中文。失败后的卸载1.进入安全模式2.删除相关文件夹f盘appc盘program file中oracle文件夹3.windows+r,输入msconfig4.c盘用户祁名烦temp文件夹下删除Oracle相关5."C:\ProgramData\Microsoft\Windows\Start Me...

h5移动端调试工具vConsole_alokka的博客-程序员宝宝_h5 手机调试工具

1.npm使用方法npm 安装vconsole npm install vconsole -D 在 main.js 中引用 import Vconsole from 'vconsole'; const vConsole = new Vconsole();在页面中正常使用 console.log(&amp;quot;lokka&amp;quot;)js中使用下载 vConsole 的最新版本,取...

随便推点

tensorflow: 怎样找到对应的bazel 版本和安装_shuai_wen的博客-程序员宝宝_查看bazel版本

tensorflow是用bazel编译的,有些情景是需要bazel编译的,如定制kernel,编译一些工具如freeze_graph等。如果要编译成功需要找到对应的bazel版本,并不是说使用最高的bazel就能成功。使用tensorflow的过程中不时因为tensorlfow和bazel的版本不匹配出现各种问题,且这些问题不好解决。怎样找到对应的版本tensorflow的源码里已经明确告...

将Emacs配置成一个C/C++的IDE编程环境_robertzhouxh的博客-程序员宝宝

将Emacs配置成一个C/C++的IDE编程环境                                                                                                                                            ——by 0-&-11.写在前面         Linux

我国SOA标准体系进入倒计时_胡争辉的博客-程序员宝宝

 众多参会厂商的参与说明了SOA标准化的市场需求有多大。今年年底之前,中国将初步制定完成SOA标准体系一个有吸引力的市场必定也有其生命力。这从SOA标准化国际论坛的众多参会厂商和主办方就能看出来。11月5日,主题为“SOA的标准与应用”的“SOA标准化国际论坛”在京举行。这是目前在SOA标准制定方面权威机构最多、参与厂商最多的一次论坛。中国电子技术标准化研究所(

18three.js加载obj模型和材质_X01动力装甲的博客-程序员宝宝

18three.js加载obj模型和材质图片.pngobj和mtl加载器更新变化很大。下面的代码是92版本的代码,参考官方的案例。 var onProgress = function ( xhr ) { if ( xhr.lengthComputable ) { ...

Android应用开发新路线_拟声的主扬的博客-程序员宝宝

Android应用开发新路线利用HTML5开发Android应用程序!Android与HTML5融合Android的HTML5应用程序概述如何适配多分辨率的Android设备?如何在Android中构建HTML5应用程序?对其内容详细阅读

前端开发中表格table单元格高度或者行高的设置_翔云123456的博客-程序员宝宝_table单元格高度

最近开发中遇到一个问题:在width一定的情况下,如何设置table的单元格高度? td的height、max-height属性设置以后,发现完全没有效果。后来多方收集资料后才明白,单元格高度由以下因素决定:首先,根据单元格内内容,要把内容放的下;其次,再看height设置值;如果内容小于height,单元格高度自动扩展到height;参考:http://www.cnblogs.com/li