使用函数java快速失败(或者更确切地说,返回)

u07*_*103 1 java lambda java-8

为选错的头衔道歉,想不出一个更好的头衔.请随时建议一个新的标题.

我想使用Java 8 lambda表达式编写以下代码

List<Function<MyClass, Optional<String>>> functions //assume initialized
for (final Function<MyClass, Optional<String>> function : functions) {
    final Optional<String> result = function.apply(objectOfMyClass);
    if (result.isPresent()) { //as soon as one of the function returns a non-null string, return
        return result; //
    }
}
Run Code Online (Sandbox Code Playgroud)

有关如何去做的任何建议?

Lou*_*man 5

functions.stream()
    .map(f -> f.apply(objectOfMyClass))
    .filter(Optional::isPresent)
    .map(Optional::get)
    .findAny()
Run Code Online (Sandbox Code Playgroud)

findAny是一种短路终端操作,基本上就是说,一旦找到有效输出就会短路.