私は3つのjava8オプションを持っていて、どれが実際に優先順序で存在していても返したいと思います。そのようにそれらをチェーンに簡単な方法があるべきように思え:3つのすべてが空の場合3つの可能なjava8オプション値 - どれが存在するかをきれいに返すにはどうすればよいですか?
return optionalA.orElseIfPresent(optionalB).orElseIfPresent(optionalC);
、その後、Optional.empty()
が返されるべきです。
既存のorElseとorElseGetは実際にはタスクに依存しません。実際の値を返さなければならないため、残りの代替がオプション自体であることはできません。
最悪の場合、私はifPresent()チェックの長いリストを持つことができますが、それについてはもっと良い方法があるようです。
ストリームの回答が「もっときれい」かもしれませんが、このソリューションは簡単で透明です(さらに、効率的です)。 –