gpt4 book ai didi

java - Java 8 中的可选链接

转载 作者:IT老高 更新时间:2023-10-28 20:26:23 25 4
gpt4 key购买 nike

寻找一种链接选项的方法,以便返回第一个存在的选项。如果不存在 Optional.empty() 应该返回。

假设我有几个这样的方法:

Optional<String> find1()

我正在尝试链接它们:

Optional<String> result = find1().orElse( this::find2 ).orElse( this::find3 );

但这当然行不通,因为 orElse 需要一个值,而 orElseGet 需要一个 Supplier

最佳答案

使用流:

Stream.of(find1(), find2(), find3())
.filter(Optional::isPresent)
.map(Optional::get)
.findFirst();

如果您需要懒惰地评估 find 方法,请使用供应商函数:

Stream.of(this::find1, this::find2, this::find3)
.map(Supplier::get)
.filter(Optional::isPresent)
.map(Optional::get)
.findFirst();

关于java - Java 8 中的可选链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28514704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com