わかりやすいNullPointerException
JVMがどの変数がnullだったかを自動的に教えてくれる。
コード比較
✕ Java 8
// Old NPE message: // "NullPointerException" // at MyApp.main(MyApp.java:42) // Which variable was null?!
✓ Java 14+
// Modern NPE message: // Cannot invoke "String.length()" // because "user.address().city()" // is null // Exact variable identified!
このコードに問題がありますか? お知らせください。
モダンな方法が優れている理由
正確な変数特定
メッセージはチェーン内のnull変数を指定します。
デバッグが速い
5つのチェーン呼び出しのどれがnullだったか推測不要。
無償のアップグレード
コード変更不要 — JDK 14以降で実行するだけ。
旧来のアプローチ
不明瞭なNPE
モダンなアプローチ
詳細なNPE
JDKバージョン
14
難易度
初級
JDKサポート
わかりやすいNullPointerException
利用可能
JDK 14(2020年3月)以降、広く利用可能
仕組み
わかりやすいNPEはどの式がnullで、どの操作が失敗したかを説明します。Java 14からデフォルトで有効になっています — コードの変更は不要で、JDKのアップグレードだけで利用できます。
関連ドキュメント