【发布时间】:2019-06-12 13:23:03
【问题描述】:
我有两个返回 Optional 的方法 func1 和 func2。
如果 func1 返回的 Optional 有值,则返回 Optional,否则调用 func2 并返回其 Optional。
一种方法是使用if-else。
Optional<MyObject> opt1 = func1();
if (opt1.isPresent()) {
return opt1;
}
return func2();
但是,我希望使用 Java 8 Optional 来实现它并避免使用if-else。
类似:
return Optional.of(obj1)
.flatMap_returnOptionalIfvaluePresent(func1)
.orElseReturnOptionalFromThis(func2)
任何人都可以提出一个好的方法吗?
【问题讨论】:
-
什么是
func1和func2?如果它们是方法,请重新格式化您的代码以使其有效。提供预期的输入和期望的输出。提供if-else使问题更清晰。 -
您为什么要避免使用清晰简单的
if-else以获取难以阅读的方式? -
这可能是一个好问题,但目前尚不清楚您想要什么。发布您使用
if-else的代码,这样您想要实现的目标就显而易见了。 -
@Michael 我和你在一起,如果 OP 来解释更多,这可能是一个相当好的问题
标签: java java-8 optional flatmap