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")));
}
}
ページのトップへ戻る