gpt4 book ai didi

java 可选 : a good way to not having to do nested ifPresent()

转载 作者:搜寻专家 更新时间:2023-11-01 01:15:28 25 4
gpt4 key购买 nike

我经常需要做如下的事情

// some method
public T blah() {
Optional<T> oneOp = getFromSomething();
if (oneOp.isPresent()) {
Optional<T> secondOp = getFromSomethingElse(oneOp.get())
if (secondOp.isPresent()) {
return secondOp.get()
}
}
return DEFAULT_VALUE;
}

继续检查 ifPresent() 非常麻烦,就好像我回到做空检查一样

最佳答案

使用the flatMap method如果存在,它将使用提供的 FunctionOptional 替换为另一个 Optional

If a value is present, returns the result of applying the given Optional-bearing mapping function to the value, otherwise returns an empty Optional.

然后,您可以使用 orElse如果存在,它将返回值或您提供的默认值。

If a value is present, returns the value, otherwise returns other.

在这里,我还将对 getFromSomethingElse 的调用转换为一个方法引用,它将匹配 flatMap 所需的 Function

public T blah() {
return getFromSomething().flatMap(this::getFromSomethingElse).orElse(DEFAULT_VALUE);
}

关于java 可选 : a good way to not having to do nested ifPresent(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54950165/

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