链接Java可选地图和orElse(if-else-style)

Mar*_*eln 2 java optional

在Java中是否有一种优雅的流媒体方式可以说"如果值存在,则将此可选映射到具有计算值的另一个可选,否则返回空可选"?

我想到了类似的东西:

Optional<Float> amount = ...;
Optional<MonetaryAmount> myAmount = amount
    .map(theAmount -> FastMoney.of(theAmount, "EUR")).orElse(Optional.empty());
Run Code Online (Sandbox Code Playgroud)

但这是不可能的.

我提出的解决方案有点冗长而不像流媒体:

Optional<Float> amount = ...;
Optional<MonetaryAmount> myAmount = amount.isPresent() ?
          Optional.of(FastMoney.of(amount.get(), "EUR")) : Optional.empty();
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 5

你不需要这个orElse条款:

Optional<Float> amount = ...;
Optional<MonetaryAmount> myAmount =
    amount.map(theAmount -> FastMoney.of(theAmount, "EUR"));
Run Code Online (Sandbox Code Playgroud)