yucatio@システムエンジニア

趣味で作ったものいろいろ

Optional.flatMap()は再帰的かどうか

疑問

Optional.flatMap()は再帰的かどうか(2段以上Optionalがネストされた場合に一番内側の値を取得するか)

結論

再帰的でない。

Optional.flatMap()とは

Optionalのマップの結果がOptionalのとき、その中身を取り出してくれるメソッド

Optional<String> o = Optional.of("a");
    
Optional<Integer> p = o.flatMap(a -> Optional.of(3));
    
p.ifPresent(i -> System.out.println(i));
// 3

OptionalにさらにOptionalをネストしてみる

Optional<String> o = Optional.of("a");

Optional<Optional<Integer>> q =  o.flatMap(a -> Optional.of(Optional.of(5)));

Optional<Integer> r = q.flatMap(Function.identity());