UninitializedPropertyAccessException: lateinit property has not been initialized
Kotlinでlateinitプロパティが初期化前にアクセスされた場合に発生
概要
UninitializedPropertyAccessExceptionは、Kotlinでlateinit修飾子を付けたプロパティが初期化される前にアクセスされた場合に発生します。
エラーメッセージ
kotlin.UninitializedPropertyAccessException: lateinit property viewModel has not been initialized
原因
- 初期化前のアクセス: ライフサイクルの順序を考慮していない
- DIの失敗: 依存性注入が正しく行われていない
- テストでの初期化漏れ: モックやセットアップが不足
解決策
1. 初期化タイミングを確認
| |
2. isInitializedで確認
| |
3. lazy委譲を使用
| |
4. nullableに変更
| |
5. Dagger/Hiltで確実に注入
| |
6. テストでの初期化
| |
Kotlin の他のエラー
この記事は役に立ちましたか?