【Kotlin/Android】lateinit(遅延初期化プロパティ)とは?使い方
この記事からわかること
- Androidアプリ開発:lateinit(遅延初期化プロパティ)とは?
- 宣言方法や使い方
- kotlin.UninitializedPropertyAccessException: lateinit property name has not been initializedの原因
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
環境
- Android Studio:Flamingo
- Kotlin:1.8.20
lateinit(遅延初期化プロパティ)とは?
通常クラスのプロパティはインスタンス化時に初期化(初期値を格納する)必要があります。初期値を格納しないとProperty must be initialized or be abstract
というエラーが発生します。
class User {
var name: String = "" // ○
var name: String = // × Error:Property must be initialized or be abstract
}
しかしさまざまな理由で初期化のタイミングを遅らせたい時があり、そんな時に使用できるのがlateinit
です。lateinit
はプロパティの宣言の前に付与して使用します。また付与できるのはvar
(変数)のみです。
class User {
lateinit var name: String
}
kotlin.UninitializedPropertyAccessException: lateinit property name has not been initialized
初期化のタイミングを遅らせたことで明示的に別のタイミングで初期値を格納する必要があります。もし初期化されていない状態で参照しようとするとkotlin.UninitializedPropertyAccessException
という例外をスローします。
User2().name
// kotlin.UninitializedPropertyAccessException: lateinit property name has not been initialized
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。