Java開発で最もよく発生する例外の一つが NullPointerException(NPE) です。
「動くと思ったら落ちた」「例外箇所が分かりにくい」「テストで見逃した」など、プロジェクト規模が大きくなるほど厄介な問題になります。
しかし、ポイントを押さえて設計・実装すれば NullPointerExceptionは確実に減らすことができます。
本記事では、実務で使える「NullPointerExceptionを防ぐ5つの方法」をサンプルコード付きで紹介します。
✅ NullPointerExceptionとは?
null の参照に対してメソッドを呼び出したり、フィールドにアクセスしようとすると発生する実行時例外です。
|
1 2 |
String name = null; System.out.println(name.length()); // ← ここで NullPointerException |
IDEでは検知されず、実行しないと気づけない点が厄介です。
① nullチェックを徹底する
最も基本的な対策は、使う前に必ず nullチェックをすること です。
ただし、条件が増えるほどコードが冗長になり、可読性が落ちるため、後述するOptionalや早期リターンと併用するのがおすすめです。
② Optionalを活用する(Java 8以降)
Optionalは、値があるかどうかを明確に扱う仕組みです。
nullを返すメソッドを避けたい場合に有効です。
デフォルト値を設定したい場合は orElse() が便利です。
③ 早期リターン(ガード節)を採用する
処理の前提条件を満たさない場合、早めに return で抜ける ことでnullアクセスを防止できます。
悪い例👇
良い例👇
コードがシンプルになり、NPEの発生確率も低下します。
④ 初期値を設定する(オブジェクト・コレクション)
変数に デフォルト値を与えておくことで nullのまま使われるケースを減らせます。
|
1 |
private String status = ""; |
特にコレクションは null ではなく 空オブジェクト を返す設計にすると安全です。
⑤ nullを返す設計を避ける(メソッド設計ルール)
NPEの多くは nullを返すメソッドが存在することが原因 です。
🛑 悪い例:
👍 良い例:
または 場合によっては例外を返すほうが安全なこともあります。
まとめ:NullPointerExceptionを防ぐための考え方
| 方法 | 特徴 | 難易度 |
|---|---|---|
| nullチェック徹底 | 最も基本的だが冗長になりがち | ★☆☆ |
| Optional活用 | Java8以降で推奨設計 | ★★☆ |
| 早期リターン | コードが読みやすく再発防止にも有効 | ★★☆ |
| 初期値設定 | Null安全設計の基本 | ★☆☆ |
| nullを返さない設計 | アプリ全体の品質向上につながる | ★★★ |
✨結論
NullPointerExceptionは「気をつける」ではなく「防ぐ設計をする」ことで確実に減らせるエラーです。
特に以下の3つを優先採用すると劇的に改善します。
-
Optionalを積極的に使う -
nullを返さないメソッド設計
-
コレクションは空リストで返すルール運用

