在Java中是否有优雅的流媒体方式说“如果值存在,则将此可选映射到具有计算值的另一个可选,否则返回空可选”?
我想到了类似的东西:
Optional<Float> amount = ...;
Optional<MonetaryAmount> myAmount = amount.isPresent() ?
Optional.of(FastMoney.of(amount.get(), "EUR")) : Optional.empty();
但这是不可能的。
我提出的解决方案有些冗长而且不像流媒体一样:
String.IsNullOrWhitespace(string value)
答案 0 :(得分:5)
您不需要orElse
子句:
Optional<Float> amount = ...;
Optional<MonetaryAmount> myAmount =
amount.map(theAmount -> FastMoney.of(theAmount, "EUR"));