【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と戦うのです(笑)
是非参考ください!
是非フォローしてください
最新の情報をお伝えします