相关疑难解决方法(0)

如何在不嵌套Optional#ifPresent()的情况下将lambda与所有在内部范围内可用的可选值链接在一起?

这是我另一个问题的分支:如何在lambda中链接Optional#ifPresent()而不进行嵌套?

但是,现在的问题是如何提供一个lambda解决方案,其中所有可选值都在最内部作用域中可用:

B b = procA().flatMap(this::procB).orElseThrow(SomeException::new);

// Value from procA() is not available.
Run Code Online (Sandbox Code Playgroud)

我的原始代码是:

void SomeMethod() {
    procA().ifPresent(a -> {
       procB(a).ifPresent(b -> {
          // Do something with a and b

          return;
       });
    });

    throw new SomeException();
}
Run Code Online (Sandbox Code Playgroud)

我了解return最内在的范围是错误的。新flatMap示例说明了正确的行为。

我使用ifPresent()而不是get()避免潜在的运行时异常,在这种情况下,我可能无法检查是否为optional的值isPresent()

java lambda optional

5
推荐指数
1
解决办法
219
查看次数

标签 统计

java ×1

lambda ×1

optional ×1