gpt4 book ai didi

java - 当需要对结果调用方法时,如何使用 orElse?

转载 作者:行者123 更新时间:2023-11-30 06:10:02 26 4
gpt4 key购买 nike

我有以下代码打击。我试图找到一种方法来避免 if (something.isPresent())行并声明 Optional<Something> something以及。相反,我想链接 Optional.orElse()方法并直接返回结果。但我似乎找不到办法,因为如果找不到元素,该方法需要返回 null,如果找到,则需要在返回之前对其调用一个方法。

有更好的方法吗?

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

public class OrElseWhat {

private class Something {
private String it;
Something(String it) { this.it = it; }
String getIt() { return it; }
}

private List<Something> somethings = new ArrayList<Something>() {
{
add(new Something("one"));
add(new Something("two"));
add(new Something("three"));
}
};

public String getFourOrNull() {
Optional<Something> something = somethings.stream()
.filter(s -> s.getIt().equals("four"))
.findAny();

if (something.isPresent()) {
return something.get().getIt();
}

return null;
}
}

最佳答案

您可以在您的值仍处于 Optional 形式时使用 map 调用该方法:

public String getFourOrNull() {
return somethings.stream()
.filter(s -> s.getIt().equals("four"))
.findAny()
.map(Something::getIt)
.orElse(null);
}

来自 mapsdocumentation :

If a value is present, apply the provided mapping function to it, and if the result is non-null, return an Optional describing the result. Otherwise return an empty Optional.

就是说,如果可以的话,听听@Aaron 并删除 orElse,以便 getFourOrNull 返回 Optional。在使用 Optional 的代码库中,任何方法都不应返回 null

关于java - 当需要对结果调用方法时,如何使用 orElse?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36722308/

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