2017-11-30 6 views
1

「このオプションを別のものにマップする」と言っているエレガントでストリーミングな方法はありますか?値が存在すれば計算値、 ?JavaオプションのマップとorElse(if-else-style)の連鎖

私のようなものを考えた:

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

しかし、これは不可能です。私が思いついた

ソリューションは、やや冗長で、ストリーミングのようではありません。

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

答えて

3

あなたはorElse句を必要としない:

Optional<Float> amount = ...; 
Optional<MonetaryAmount> myAmount = 
    amount.map(theAmount -> FastMoney.of(theAmount, "EUR")); 
+0

Uuh、とても簡単。ありがとうございました! –

関連する問題