Optional类的主要方法有哪些
Optional 类是 Java 8 引入的一个容器对象,用于表示一个值存在或不存在。它的主要方法包括:
创建 Optional 对象
-
Optional.empty()- 返回一个空的
Optional实例。
- 返回一个空的
-
Optional.of(T value)- 创建一个包含非空值的
Optional实例。 - 如果传入的值为
null,会抛出NullPointerException。
- 创建一个包含非空值的
-
Optional.ofNullable(T value)- 创建一个
Optional实例,如果传入的值为null,则返回一个空的Optional。
- 创建一个
检查值是否存在
-
boolean isPresent()- 如果值存在则返回
true,否则返回false。
- 如果值存在则返回
-
T orElse(T other)- 如果值存在,则返回该值;否则返回指定的默认值。
-
T orElseGet(Supplier extends T> other)- 类似于
orElse,但是默认值的计算是惰性的,只有在需要时才会调用Supplier。
- 类似于
-
T orElseThrow(Supplier extends X> exceptionSupplier)- 如果值存在,则返回该值;否则抛出由
Supplier提供的异常。
- 如果值存在,则返回该值;否则抛出由
获取值
-
T get()- 返回
Optional中的值。 - 如果值不存在(即
isPresent()返回false),会抛出NoSuchElementException。
- 返回
-
Optionalfilter(Predicate super T> predicate) - 如果值存在并且满足给定的谓词,则返回包含该值的
Optional;否则返回一个空的Optional。
- 如果值存在并且满足给定的谓词,则返回包含该值的
转换值
-
Optional map(Function super T, ? extends U> mapper)- 如果值存在,则应用给定的函数并返回包含结果的
Optional;否则返回一个空的Optional。
- 如果值存在,则应用给定的函数并返回包含结果的
-
Optional flatMap(Function super T, Optional> mapper)- 类似于
map,但是mapper返回的是一个Optional对象。如果原始Optional包含值,则会扁平化嵌套的Optional。
- 类似于
其他方法
-
void ifPresent(Consumer super T> consumer)- 如果值存在,则执行给定的操作。
-
void ifPresentOrElse(Consumer super T> action, Runnable emptyAction)- 如果值存在,则执行
action;如果值不存在,则执行emptyAction。
- 如果值存在,则执行
-
Streamstream() - 返回一个顺序流,其中包含
Optional中的值(如果存在)。
- 返回一个顺序流,其中包含
-
Spliteratorspliterator() - 返回一个
Spliterator,用于并行处理Optional中的值。
- 返回一个
-
boolean equals(Object obj)- 比较两个
Optional对象是否相等。
- 比较两个
-
int hashCode()- 返回
Optional对象的哈希码。
- 返回
这些方法使得 Optional 类在处理可能为空的值时更加安全和方便,避免了空指针异常,并提供了丰富的操作接口。