Optional 接口 源码

源码注释

源码注释    

Optional是一个容器对象用于包含一个空值或者是非空值.如果Optional中的值存在,那么isPresent()方法将会返回true,get()方法会返回值.

基于Optional中的值是否为空提供了一些其他的方法:orElse(),在Optional中的值不存在时,会返回一个默认的值.isPresent(),当值存在时执行一个代码块.

创建一个空的Optional对象
成员变量value

当传入的参数不为空时,用于存放参数.如果参数为空,则用于表示值为空.

构造函数

默认构造函数
带参数的构造函数
empty()

返回一个empty实例,该实例中值不存在.通过该方法避免测试对象为空.

用于构造一个含有value的Optional对象

该方法返回一个带有值的Optional对象,使用该方法比使用构造函数使用的次数较多.

用于构造一个value不为null的Optional

关于of()和ofNullable()的区别:ofNullable()用于返回Optional中的静态final实例,而使用of()创建值为空的实例时会报错.

使用ofNullable()返回实例时,返回的都是Optional类中的静态final实例EMPTY
使用of()传入null时报错


get()方法源码

用于获取Optional中的value,如果value不存在的,则抛出NoSuchElementException

isPresent()源码

用于判断Optional中的value是否为null

ifPresent()源码

如果Optional中的value存在,那么就执行参数中consumer接口的accept()方法

filter源码

如果value存在,并且value符合传入的参数predicate,则返回该Optional否则返回EMPTY.


map()

该方法接收一个Function参数,当Optional中的值不为空的时候,调用Function.apply()并返回Optional装饰的结果.但value为空时,返回EMPTY.

flatMap()

该方法基本和map()相同,不同之处在于,接收的参数上,flatMap()接收的function需要返回一个Optional对象,而map()值需要返回一个任意的对象

map()与faltMap()

orElseGet()
orElse()

这两个方法都是用于在value为空的时候,返回一个新的对象,对于orElse()的话,它只能返回传入的参数,而对于orElseGet(),它能调用get方法,执行对于的逻辑返回不同新的参数.如下例子:


使用orElseGet

上面的代码也等同于下面的这段

普通情况下调用
orElseThrow

该方法接收一个返回Exception的参数,当Optional中的值为null时,抛出异常.当value不为null时,返回值.

equals()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容