KotlinNullPointerException
Kotlinでnull安全機能を迂回した際のNullPointerException
概要
Kotlinでnull安全機能を迂回(!!演算子の使用など)した際にnull値にアクセスしようとすると発生するエラーです。Kotlinはnull安全を言語レベルでサポートしていますが、強制的にnullを許容する場合にこのエラーが発生します。
エラーメッセージ
kotlin.KotlinNullPointerException
java.lang.NullPointerException: null cannot be cast to non-null type
Exception in thread "main" kotlin.KotlinNullPointerException
原因
- !!演算子の乱用: non-null assertionでnull値をアクセス
- Javaとの相互運用: Javaコードからのnull値
- lateinitの未初期化: lateinitプロパティを初期化前にアクセス
- プラットフォーム型: Javaからの戻り値がnull
- キャストエラー: nullをnon-null型にキャスト
解決策
1. !!演算子を避ける
| |
2. nullチェック
| |
3. lateinitの安全な使用
| |
4. Javaとの相互運用
| |
5. コレクションのnull処理
| |
6. マップのアクセス
| |
7. require/checkNotNull
| |
8. Sealed classでnull回避
| |
9. Null Object パターン
| |
Kotlinのnull安全機能
| 機能 | 用途 |
|---|---|
?. (safe call) | nullならnullを返す |
?: (Elvis) | nullならデフォルト値 |
!! (non-null assertion) | nullならNPE(避けるべき) |
let | null以外の場合に処理 |
also, run | スコープ関数でnullハンドリング |
よくある間違い
!!演算子を便利だからと多用する- Javaライブラリの戻り値をnullチェックしない
- lateinitをlazyと混同する
- nullableなコレクション要素のチェック忘れ
関連エラー
参考リンク
Kotlin の他のエラー
この記事は役に立ちましたか?