级联方法,每个方法都返回一个Java8 Optional <>

sla*_*dan 6 java optional java-8

我有几个方法,每个方法返回一个可选的字符串.我如何组合,以便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();
    }
}
Run Code Online (Sandbox Code Playgroud)

Amr*_*Amr 0

您可以执行类似于责任链模式的操作,基本上您只需调用第一个方法。然后在第一个方法中,如果可以返回结果,则返回它。如果它为空,则调用您的后继方法。