gpt4 book ai didi

java - 组合选项最优雅的方式是什么?

转载 作者:IT老高 更新时间:2023-10-28 21:00:33 25 4
gpt4 key购买 nike

这是我目前所得到的:

Optional<Foo> firstChoice = firstChoice();
Optional<Foo> secondChoice = secondChoice();
return Optional.ofNullable(firstChoice.orElse(secondChoice.orElse(null)));

这让我觉得既可怕又浪费。如果 firstChoice 存在,我会不必要地计算 secondChoice。

还有一个更高效的版本:

Optional<Foo> firstChoice = firstChoice();
if(firstChoice.isPresent()) {
return firstChoice;
} else {
return secondChoice();
}

在这里,如果不复制映射器或声明另一个局部变量,我就无法将某些映射函数链接到末尾。所有这些都使得代码比要解决的实际问题更复杂。

我宁愿写这个:

return firstChoice().alternatively(secondChoice());

然而 Optional::alternatively 显然不存在。现在呢?

最佳答案

试试这个:

firstChoice().map(Optional::of)
.orElseGet(this::secondChoice);

map 方法为您提供 Optional<Optional<Foo>> .然后,orElseGet方法将其变平为 Optional<Foo> . secondChoice只有在 firstChoice() 时才会评估方法返回空的可选项。

关于java - 组合选项最优雅的方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32776705/

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