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

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)

04)JDK1.8 新特性学习 Optional容器_第1张图片

 

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

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

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

04)JDK1.8 新特性学习 Optional容器_第2张图片

04)JDK1.8 新特性学习 Optional容器_第3张图片

04)JDK1.8 新特性学习 Optional容器_第4张图片

 

 2.13 Optional.empty()介绍

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

04)JDK1.8 新特性学习 Optional容器_第5张图片

 

 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

你可能感兴趣的:(java,jdk8,jdk1.8,jdk8新特性,Optional)