トッカンソフトウェア

Optional


Optionalはコンテナオブジェクトです。nullに対して色々なことができます。
基本はOptional.ofNullableで作成して、isPresentでチェックして、getで取り出す感じです。

サンプル

				
import java.util.Optional;

public class Opt {
	public static void main(String[] args) {

		String strHello = "Hello";
		String strNull = null;


		// ***** Optionalの作成 ***** 

		// 引数が null の場合、例外発生
		Optional<String> optHello = Optional.of(strHello);
		// 引数が null の場合、例外発生しない
		Optional<String> optNull1 = Optional.ofNullable(strNull);
		// null の Optional 作成
		Optional<String> optNull2 = Optional.empty();

		System.out.println("Optional[Hello] が出力:" + optHello);
		System.out.println("Optional.empty が出力:" + optNull1);
		System.out.println("Optional.empty が出力:" + optNull2);


		// ***** nullチェックと値取得 ***** 

		// null 以外の場合、true
		if (optHello.isPresent()) {

			// Optional から値を取り出す
			System.out.println("Hello が出力:" + optHello.get());
		}

		System.out.println("false が出力:" + optNull1.isPresent());
		System.out.println("true が出力:" + optNull2.isEmpty());


		// ***** その他 ***** 

		// null の場合、指定値を返す
		System.out.println("Not Set が出力:" + optNull2.orElse("Not Set"));
		// null の場合、指定Optionalを返す
		System.out.println("Optional[Hello] が出力:" + optNull2.or(() -> optHello));

		// null 以外の場合、編集し結果をOptionalで返す
		System.out.println("Optional[Hello World] が出力:" + optHello.map(s -> s + " World"));
		// null 以外の場合、編集し結果をフラットなOptionalで返す
		System.out.println("Optional[Hello World] が出力:" + optHello.flatMap(s -> Optional.of(s + " World")));
		// flatMapではない場合、Optionalを重ねて返す
		System.out.println("Optional[Optional[Hello World]] が出力:" + optHello.map(s -> Optional.of(s + " World")));
	}
}


			


ページのトップへ戻る