04)JDK1.8 新特性学习 Optional容器

本文详细介绍了Java 8的Optional容器类,包括Optional的介绍、主要API如of、empty、ofNullable的使用,以及orElse、orElseGet、orElseThrow、map、flatMap、isPresent、ifPresent和filter等方法的解释和示例。通过学习,读者将能够更好地理解和应用Optional,减少空指针异常。
摘要由CSDN通过智能技术生成

1.先抄一段Optional的介绍

Optional 类(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

2.API介绍

2.1 Optional(T value),empty(),of(T value),ofNullable(T value)

2.11 Optional(T value)

构造函数,private权限的。其余三个都是静态函数

首先大致看下Optional的源码,Optional类为泛型类,构造器均为私有的,提供静态静态给外界调用

Optional 的值为final修饰的 ,任何操作都不会改变Optional 的值。

构造器Optional(T value)

 

2.12 Optional.of(T value)方法介绍

通过of(T value)函数所构造出的Optional对象,当Value值为空时,依然会报NullPointerException。

查看源码of函数会调用requireNonNull方法

 

 2.13 Optional.empty()介绍

通过Optional.empty()创建一个空的通过Optional对象

 

 2.14 Optional.ofNullable()介绍

相比较of(T value)的区别就是,当value值为null时,of(T value)会报NullPointerException异常;
 ofNullable(T value)不会throw Exception,ofNullable(T value)直接返回一个EMPTY对象。
  如果我们在使用场景中希望为null直接抛出空指针异常则of函数适合
如果希望为null时返回一个空的Optional对象则使用ofNullable

 

 3.orElse(T other),orElseGet(Supplier<? extends T> other)和orElseThrow(Supplier<? extends X> exceptionSupplier)

这3个函数都是在构造函数传入的value值为null时,进行调用的,

3.1 orElse(T other)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值