はじめに
Java開発に携わっていると、避けて通れないのが NullPointerException(NPE) です。
「値がnullのままメソッドを呼んでしまった…」「if文でnullチェックばかり書いてコードが読みにくい…」といった経験は、どんなエンジニアが一度は通る道です。
今回は、Optionalの基本構文からNullPointerException対策について記載していきたいと思います。
他にも、体系的にJavaを学びたい方には以下の教材がおすすめです:
👉スッキリわかるJava入門
👉スッキリわかるJava入門 実践編
NullPointerExceptionとは?
NullPointerException(NPE)とは、Nullのオブジェクトに対して処理を実行しようとして実行ができずにExceptionで落ちる事象です。
発生例
text がnullのままメソッドを呼び出すとNPEが発生します。
このようにExceptionを発生させないためには「値が存在するかどうか」を常に意識してコードを書く必要があります。
String text = null;
System.out.println(text.length()); // NullPointerException
NullPointerException(NPE)の問題点
- 冗長なコード:毎回if文で null をチェックする必要がある
- バグの発生:チェック漏れで実行時エラーが発生
- 運用リスク:本番環境でNPEが起きるとシステム障害に直結
Optionalとは?
Optional は「値があるかもしれないし、ないかもしれない」という状態を表すクラスです。
Java 8で導入されたクラスで、nullの可能性がある値を安全に扱うためのクラスとなります。
基本構文
Optional<型> value = Optional.ofNullable(値);
// 値があれば表示
value.ifPresent(System.out::println);
Optionalの生成方法
Optional.of
値が必ず存在するとわかっている場合に使用します。
値がnullだった場合、必ず NullPointerException が投げられます。
import java.util.Optional;
~~~~略~~~~
Optional<String> opt = Optional.of("Java");
Optional.ofNullable
値が存在するか不明な場合はこちらを使用します。
Optional<String> opt = Optional.ofNullable(null); // 空のOptional生成
Optional.empty
空の宣言時に使用します。
Optional<String> opt = Optional.empty();
Optionalの活用方法
ifPresent(値がある場合のみ処理)
「ifPresent」は値が存在する場合のみ処理を行います。
Optional<String> opt = Optional.of("Java");
opt.ifPresent(v -> System.out.println("値: " + v));
orElse(値がない場合にデフォルト値)
値が存在しない場合に、「orElse」で指定したデフォルトの値を返します。
Object name = Optional.ofNullable(null).orElse("デフォルト");
System.out.println(name); // デフォルト
orElseThrow(値がなければ例外)
値が存在しない場合に、例外を投げる仕組みも作成できます。
String result = Optional.ofNullable(null)
.orElseThrow(() -> new IllegalArgumentException("値が必要です"));
まとめ
OptionalはJavaにおける NullPointerException対策の有効なツール です。
メソッド | 内容 |
of | null以外しか格納できない |
orElse | デフォルト値を設定 |
ifPresent | 値の存在チェックが可能 |
orElseThrow | 例外を投げる |
最後に
Javaの環境構築は、この記事を参照してみてください。
【開発環境構築】VS CodeでJavaを使用するための環境構築を実施する – SEもりのLog (selifemorizo.com)
以上、ログになります。
これからも継続していきましょう!!
コメント