たま

技術的なメモ置き場。主にJava。

Java9 Optionalの追加メソッド

Java9の新機能を試す。 今回はOptionalに追加されたメソッド。

ifPresent(Consumer action)

値が存在する場合のみactionを実行する。

// Foo が出力される
Optional.ofNullable("Foo").ifPresent(System.out::println);
// 何も出力されない
Optional.ofNullable(null).ifPresent(System.out::println);

ifPresentOrElse(Consumer action, Runnable emptyAction)

値が存在する場合はactionを実行する。
値が存在しない場合はemptyActionを実行する。

// Foo が出力される
Optional.ofNullable("Foo").ifPresentOrElse(
        System.out::println, () -> System.out.println("Bar"));
// Bar が出力される
Optional.ofNullable(null).ifPresentOrElse(
        System.out::println, () -> System.out.println("Bar"));

or(Supplier supplier)

値が存在する場合はそのOptionalを返す。
値が存在しない場合はsupplierが返すOptionalを返す。

// Foo が出力される
Optional.ofNullable("Foo").or(() -> Optional.of("Bar")).ifPresent(System.out::println);
// Bar が出力される
Optional.ofNullable(null).or(() -> Optional.of("Bar")).ifPresent(System.out::println);

stream()

値が存在する場合は要素が1個のストリームを返す。
値が存在しない場合は要素が0個のストリームを返す。

// 1
Optional.ofNullable("Foo").stream().count();
// 0
Optional.ofNullable(null).stream().count();