我正在尝试做这样的事情:
private String getStringIfObjectIsPresent(Optional<Object> object){
object.ifPresent(() ->{
String result = "result";
//some logic with result and return it
return result;
}).orElseThrow(MyCustomException::new);
}
这不起作用,因为 ifPresent 将 Consumer 功能接口作为参数,它具有 void accept(T t)。它不能返回任何值。还有其他方法吗?
原文由 RichardK 发布,翻译遵循 CC BY-SA 4.0 许可协议
实际上您正在搜索的是: Optional.map 。您的代码将如下所示:
如果可以的话,我宁愿省略
Optional
。最后,在这里使用Optional
你什么也得不到。稍微其他的变体:如果您已经有了
Optional
由于另一个调用,我仍然建议您使用map
-method,而不是isPresent
等。唯一的原因,我觉得它更具可读性(显然是一个主观决定;-))。