1.说明
public final class Optional
extends Object
可能包含或不包含非空值的容器对象。 如果一个值存在, isPresent()
将返回true
和get()
将返回值。
提供依赖于存在或不存在包含值的其他方法,例如orElse()
(如果值不存在则返回默认值)和ifPresent()
(如果值存在则执行代码块)。
Optional 是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。
Optional 类的引入很好的解决空指针异常。
2.API

3.常用方法及示例
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()。
fiatMap(Function mapper);与 map 类似,要求返回值必须是Optional。
示例:
package com.example.demo.optional;import com.example.demo.domain.Student;import java.util.Optional;/*** @Author linaibo* @Date 2023/2/26 14:22* @PackageName:com.example.demo.optional* @ClassName: OptionalDemo1* @Version 1.0*/
public class OptionalDemo1 {public static void main(String[] args) {// of方法: 创建一个 Optional 实例。Optional student = Optional.of(new Student());if (student.isPresent()) {// 执行结果System.out.println(student.get());} else {System.out.println("不存在");}// empty方法:创建一个空的 Optional 实例。结果为不存在Optional
error示例:
// empty方法:创建一个空的 Optional 实例。结果为不存在Optional
Optional
4.总结
方法的返回值可以使用optional进行包装,避免空指针。
一般调用ofNullable()方法,然后使用isPresent()方法判断是否有值,没有值得场合直接抛出异常;有值的场合继续后续处理。当然有时候传入的对象有可能是空对象。使用对象的某个具体的项目时要进行判断看看是否有值。