【发布时间】:2015-09-18 10:46:08
【问题描述】:
我有几个方法,每个都返回一个可选字符串。那我该如何组合,让java调用每个方法,直到找到结果?
我想以这样的方式结束,但没有orElseFlatMap() 方法:
import java.util.Optional;
public class OptionalCascade {
public static void main(String[] args) {
Optional<String> result =
// try to get a result with method A
methodA()
// if method A did not return anything, then try method B
.orElseFlatMap(methodB());
}
static Optional<String> methodA() {
return Optional.empty();
}
static Optional<String> methodB() {
return Optional.empty();
}
}
【问题讨论】:
-
一得到结果就想短路?在这种情况下,您不能只将方法调用放在构造中。您必须将调用包装在 lambda 中(例如使用
orElseGet(() -> methodB() -
我会继续使用旧的 if-else 和 null :)