【Java】Optional変数が空の場合のさまざまな制御を確認しよう!

Javaの実装でNullPointerExceptionを発生させるととても恥ずかしい…(笑)

Nullを上手く扱うために「Optional」を利用するのではないでしょうか?

今回は「Optional」を使用して、Nullの場合、Nullでない場合を考慮したスマートな制御(実装)を紹介していきたいと思います


1. 値が空のOptional変数の宣言

ひとまず空のOptionalはどうやって作るの?です(笑)

以下で空のOptional変数を生成できます

Optional<String> optionalValue = Optional.empty();

2. isPresentを使う

OptionalのisPresent()メソッドを使って、中身が空かどうかを判定します
isPresent()は中身が存在すればtrueを返し、空ならfalseを返します(「isEmpty()」はその逆ですね)

Optional<String> optionalValue = Optional.empty();

if (optionalValue.isPresent()) {
    // 中身が存在する場合の処理
    String value = optionalValue.get(); // Optionalから値を取得
    System.out.println("Value is present: " + value);
} else {
    // 中身が存在しない(empty)場合の処理
    System.out.println("Value is empty");
}

3. orElseを使ったデフォルト値の設定

中身が空の場合にデフォルト値を設定することができます

Optional<String> optionalValue = Optional.empty();
String result = optionalValue.orElse("Default Value");
System.out.println("Value: " + result); // デフォルト値が出力される

この場合、optionalValueが空の場合には”Default Value”がresultに設定されます


4. orElseThrowを使った例外のスロー

値が存在しない場合に例外をスローすることもできます

Optional<String> optionalValue = Optional.empty();

try {
    String result = optionalValue.orElseThrow(() -> new RuntimeException("Value is empty"));
    System.out.println("Value: " + result);
} catch (RuntimeException e) {
    System.out.println(e.getMessage()); // Value is empty と出力される
}

5. メソッドチェーンとの組み合わせ

Optionalはメソッドチェーンで使用することもできます
例えば、map()やflatMap()を使って中身がある場合に関数を適用するなどの処理ができます

Optional<String> optionalValue = Optional.of("Hello");

optionalValue.map(value -> value.toUpperCase())
             .ifPresent(result -> System.out.println("Uppercase Value: " + result));

上記の例ではoptionalValueが存在する場合にtoUpperCase()が適用され、その結果が出力されます


いかがでしょうか?

こうやってNullと戦うのです(笑)

是非参考ください!

是非フォローしてください

最新の情報をお伝えします