我对 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 块中,但我想知道是否有更优雅的解决方案。
原文由 sebast26 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您不知道什么可以是
null
,或者想检查所有内容null
,唯一的方法是将调用链接到Optional.map
因此,如果映射器返回
null
,将返回一个空的Optional
,这允许链式调用。对
orElse(0)
的最终调用允许返回默认值 0,如果任何映射器返回null
。