在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)
你不需要这个orElse
条款:
Optional<Float> amount = ...;
Optional<MonetaryAmount> myAmount =
amount.map(theAmount -> FastMoney.of(theAmount, "EUR"));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
991 次 |
最近记录: |