ifPresentOrElse
方法是 Java 9 中 Optional
类新增的方法之一。它提供了一种更为优雅和清晰的方式,用于在 Optional
对象包含值和不包含值的情况下执行不同的操作。本文将深入解析 ifPresentOrElse
方法,介绍其用法和示例。
void ifPresentOrElse(Consumer<? super T> action, Runnable emptyAction);
action
:一个消费者函数,用于处理 Optional
对象中的值。emptyAction
:一个无参的操作,当 Optional
对象不包含值时执行。Optional
对象包含值,执行 action
操作。Optional
对象不包含值,执行 emptyAction
操作。Optional<String> optionalValue = Optional.of("Hello, World!");
// Case 1: Optional 包含值
optionalValue.ifPresentOrElse(
value -> System.out.println("Value is present: " + value),
() -> System.out.println("Value is not present")
);
// Case 2: Optional 不包含值
Optional<String> emptyOptional = Optional.empty();
emptyOptional.ifPresentOrElse(
value -> System.out.println("Value is present: " + value),
() -> System.out.println("Value is not present")
);
在上述示例中:
optionalValue
,ifPresentOrElse
方法的第一个参数是一个消费者函数,用于处理 Optional
包含的值。由于 optionalValue
包含值,因此会执行第一个参数,打印输出 “Value is present: Hello, World!”。emptyOptional
,ifPresentOrElse
方法的第二个参数是一个无参操作,用于处理 Optional
不包含值的情况。由于 emptyOptional
不包含值,因此会执行第二个参数,打印输出 “Value is not present”。ifPresentOrElse
方法可以帮助我们在处理 Optional
对象时更加简洁地区分是否包含值,避免了使用 isPresent()
方法。通过使用 ifPresentOrElse
方法,我们能够更清晰地表达对 Optional
对象是否包含值的处理逻辑,提高代码的可读性。在编写更现代化的 Java 代码时,这个方法是一个很好的选择。