JavaのNullPointerExceptionを完全ガイド!初心者でも理解できる原因と対処法
Javaの基礎を体系的に整理しながら学習したい方には、 資格対策としても定評のある定番教材が参考になります。
Javaプログラマ Silver SE 17 教科書をAmazonで見る※ Amazon広告リンク
生徒
「Javaのプログラムを実行したら、NullPointerExceptionっていうエラーが出たんですけど、どういうことなんでしょうか?」
先生
「NullPointerExceptionは、オブジェクトがnullなのに、そのオブジェクトにアクセスしようとしたときに発生する代表的な実行時例外です。」
生徒
「nullっていうのは何も入っていない状態ですよね?それを使おうとするとエラーになるんですか?」
先生
「そのとおりです。初心者が最初につまずきやすいポイントなので、具体例を交えて解説していきましょう。」
1. NullPointerExceptionとは?
NullPointerExceptionは、java.langパッケージに含まれる非チェック例外で、プログラム実行時に発生します。この例外は、オブジェクト参照がnullなのにメソッドを呼び出したりフィールドへアクセスしたときにスローされます。Javaを学び始めた初心者がよく直面するエラーであり、理解しておくことが重要です。
2. NullPointerExceptionが発生する例
次のコードは、オブジェクトを初期化していない状態でメソッドを呼び出しているため、NullPointerExceptionが発生します。
public class NullPointerExample {
public static void main(String[] args) {
String text = null;
System.out.println(text.length()); // NullPointerException発生
}
}
Exception in thread "main" java.lang.NullPointerException
変数textがnullのままlength()を呼び出したため、エラーとなっています。
3. NullPointerExceptionを回避する方法
NullPointerExceptionを避けるには、オブジェクトを必ず初期化することや、nullかどうかをチェックすることが基本です。
public class NullPointerSafe {
public static void main(String[] args) {
String text = null;
if (text != null) {
System.out.println(text.length());
} else {
System.out.println("変数はnullです");
}
}
}
変数はnullです
このようにnullチェックを入れることで、エラーを防止できます。
4. よくある原因と初心者が間違いやすいポイント
NullPointerExceptionは、配列やコレクション、メソッドの戻り値などでも発生しやすいです。例えば配列を作成していないのにアクセスしたり、Mapから取得した値がnullなのにそのまま利用すると例外が発生します。初心者は「変数が宣言されているから使える」と誤解しがちですが、実際にはオブジェクトが生成されていなければ利用できません。
5. nullを扱う上でのベストプラクティス
Javaではnullを避けるために、Optionalクラスを使ったり、デフォルト値を設定するのが効果的です。また、早めにnullチェックを行い、問題を小さく切り分けるのも重要です。業務システムやWebアプリケーションでは、外部入力やAPIからの戻り値にnullが含まれるケースが多いため、初心者のうちから安全に扱う習慣を身につけておきましょう。
6. フレームワーク利用時の注意点
SpringやJakartaEEといったフレームワークを利用する際にも、依存注入が正しく設定されていない場合にNullPointerExceptionが発生することがあります。設定ミスやアノテーションの不足によって依存関係がnullのままになるためです。初心者が大規模なフレームワークを学ぶときには、この点も特に注意して確認するとよいでしょう。