Java Optional类的主要方法有哪些

发布时间:2025-04-14 17:53:37 作者:小樊
来源:亿速云 阅读:108

Java Optional类是一个用于表示可能为null的值的容器对象。它的主要方法包括:

创建Optional对象

  1. Optional.empty()

    • 返回一个空的Optional对象。
  2. Optional.of(T value)

    • 创建一个包含非空值的Optional对象。如果传入的值为null,会抛出NullPointerException。
  3. Optional.ofNullable(T value)

    • 创建一个Optional对象,如果传入的值为null,则返回一个空的Optional对象。

检查值是否存在

  1. boolean isPresent()

    • 如果值存在,返回true;否则返回false。
  2. T orElse(T other)

    • 如果值存在,返回该值;否则返回指定的默认值。
  3. T orElseGet(Supplier<? extends T> supplier)

    • 如果值存在,返回该值;否则通过调用supplier函数来获取默认值。
  4. T orElseThrow(Supplier<? extends X> exceptionSupplier)

    • 如果值存在,返回该值;否则抛出由supplier函数提供的异常。

获取值

  1. T get()

    • 如果值存在,返回该值;否则抛出NoSuchElementException。
  2. Optional<T> filter(Predicate<? super T> predicate)

    • 如果值存在并且满足给定的谓词,则返回包含该值的Optional对象;否则返回一个空的Optional对象。

转换值

  1. <U> Optional<U> map(Function<? super T, ? extends U> mapper)

    • 如果值存在,应用给定的函数并返回包含结果的Optional对象;否则返回一个空的Optional对象。
  2. Optional<T> flatMap(Function<? super T, Optional<U>> mapper)

    • 类似于map,但如果mapper返回的是Optional对象,则会将其扁平化为单个Optional对象。

其他方法

  1. void ifPresent(Consumer<? super T> consumer)

    • 如果值存在,执行给定的操作。
  2. void ifPresentOrElse(Consumer<? super T> consumer, Runnable emptyAction)

    • 如果值存在,执行consumer操作;如果值不存在,执行emptyAction操作。
  3. T orElseThrow()

    • 等同于orElseThrow(() -> new NoSuchElementException()),如果值存在,返回该值;否则抛出NoSuchElementException。

示例代码

Optional<String> optionalString = Optional.ofNullable("Hello");

// 检查是否存在
if (optionalString.isPresent()) {
    System.out.println(optionalString.get());
}

// 提供默认值
String result = optionalString.orElse("Default");
System.out.println(result);

// 使用filter
Optional<String> filtered = optionalString.filter(s -> s.length() > 5);
filtered.ifPresent(System.out::println);

// 使用map
Optional<Integer> length = optionalString.map(String::length);
length.ifPresent(System.out::println);

// 使用flatMap
Optional<String> flatMapped = Optional.of("World").flatMap(s -> Optional.of(s.toUpperCase()));
flatMapped.ifPresent(System.out::println);

通过这些方法,Optional类提供了一种优雅且安全的方式来处理可能为null的值,减少了NullPointerException的风险。

推荐阅读:
  1. 怎么在JAVA中使用Optional类
  2. 如何使用Java Optional类

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:Java Optional与三元运算符的区别

下一篇:什么是数据库死锁现象

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》