gpt4 book ai didi

java - Optional.ofNullable 和方法链

转载 作者:IT老高 更新时间:2023-10-28 20:27:09 29 4
gpt4 key购买 nike

我对 Optional.ofNullable 方法感到惊讶。有一天我写了一个应该返回 Optional 的函数:

private Optional<Integer> extractFirstValueFrom(InsightsResponse insight) {
return Optional.ofNullable(insight.getValues().get(0).getValue());
}

我错误地认为 Optional.ofNullable 会阻止参数表达式中的任何 NullPointerExceptions

现在我想我知道这是非常愚蠢的想法。 Java 必须首先解析参数才能将其传递给 Optional.ofNullable 调用。

但我有一个问题。有没有很好的方法来实现我的目标?我想从表达式 insight.getValues().get(0).getValue() 获得一些整数值或空值。 Null 可以是以下每个表达式:insight.getValues()insight.getValues().get(0)

我知道我可以把它放在 try/catch block 中,但我想知道是否有更优雅的解决方案。

最佳答案

如果你不知道什么可以是 null,或者想检查所有的 null,唯一的方法是将调用链接到 Optional.map :

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.

因此,如果映射器返回 null,则将返回一个空的 Optional,从而允许链式调用。

Optional.ofNullable(insight)
.map(i -> i.getValues())
.map(values -> values.get(0))
.map(v -> v.getValue())
.orElse(0);

orElse(0) 的最后一次通话如果任何映射器返回 null,则允许返回默认值 0。

关于java - Optional.ofNullable 和方法链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35337020/

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