Java 在调用方法之前检查两个optionals内容

Java 在调用方法之前检查两个optionals内容,java,lambda,optional,Java,Lambda,Optional,我有一个methodC(),它接受两个非可选参数,这两个参数都是包装的,并从前面调用的其他两个方法返回 Optional<String> s1Optional = methodA(); Optional<String> s2Optional = methodB(); 只有当s1Optional不为空时,才能从methodC()获取有效的返回,但要求是我应该对s2Optional执行相同的操作。 也就是说,我应该检查s1Optional和s2Optional以执行meth

我有一个methodC(),它接受两个非可选参数,这两个参数都是包装的,并从前面调用的其他两个方法返回

Optional<String> s1Optional = methodA();
Optional<String> s2Optional = methodB();
只有当s1Optional不为空时,才能从methodC()获取有效的返回,但要求是我应该对s2Optional执行相同的操作。 也就是说,我应该检查s1Optional和s2Optional以执行methodC


我知道并不总是要求使用Optionals,但我只是在玩玩,甚至想知道这是否可行。

我不太确定我是否正确理解您的意思,但我认为您可以嵌套map方法调用来实现您想要的

s1Optional.map(
    s1 -> s2Optional.map(s2 -> methodC(s1, s2).orElse("")));
这看起来很难看。为什么不先检查
s1Optional
s2 optional
是否都有值

if s1Optional.isPresent() && s2Optional.isPresent() {
    anotherMethod(s1Optional.get(), s2Optional.get());
}
s1Optional.map(
    s1 -> s2Optional.map(s2 -> methodC(s1, s2).orElse("")));
if s1Optional.isPresent() && s2Optional.isPresent() {
    anotherMethod(s1Optional.get(), s2Optional.get());
}