Java 9 中 Optional 类新增了哪些方法?
javaobject oriented programmingprogramming更新于 2025/7/15 1:48:17
Optional 类提供了一个容器,该容器可能包含也可能不包含非空值。Java 8 中引入了此 Optional 类,以减少代码中可能生成 NullPointerException 的位置。Java 9 为 Optional 类添加了三种新方法:or()、ifPresentOrElse() 和 stream(),可帮助我们处理默认值。
Optional.or()
Java 9 中引入了 or() 方法,该方法的参数是函数式接口 Supplier。此方法始终为我们提供一个不为空的 Optional 对象。如果 Optional 对象不为空,则返回 Optional 对象本身。否则,返回 Supplier 创建的 Optional 对象。
示例
import java.io.IOException;
import java.util.Optional;
public class OptionalOrMethodTest {
public static void main(String[] args) throws IOException {
String str = null;
Optional<String> opt = Optional.ofNullable(str);
Optional<String> result = opt.or(() -> Optional.of("Adithya"));
System.out.println(result);
}
}
输出
Optional[Adithya]
Optional.ifPresentOrElse()
Java 9 中引入了 ifPresentOrElse() 方法。它与 ifPresent() 方法类似,但有一点不同,即我们添加了一个 Runnable 参数。如果 Optional 对象为空,则可以执行 Runnable 接口的对象。
示例
import java.util.Optional;
public class OptionalIfPresentOrElseTest {
public static void main(String[] args) {
String str = null;
Optional<String> opt = Optional.ofNullable(str);
opt.ifPresentOrElse(
x -> System.out.println(x),
() -> System.out.println("No value"));
}
}
输出
无值
Optional.stream()
自 Java 9 起支持 Optional.stream() 方法。此方法可用于从 Optional 对象创建新的流对象。如果 Optional 对象包含值,则返回包含该值的流对象。
示例
import java.io.IOException;
import java.util.List;
import java.util.Optional;
import java.util.stream.Stream;
public class OptionalStreamMethodTest {
public static void main(String[] args) throws IOException {
List<Optional<String>> list = List.of(
Optional.of("Jai"),
Optional.empty(),
Optional.of("Adithya"));
Stream<String> stream = list.stream().flatMap(Optional::stream);
stream.forEach(System.out::println);
}
}
输出
Jai Adithya
相关文章
有用资源
java 参考教程 - 该教程包含有关 java 的更多信息:https://www.cainiaomax.com/java/

