【Kotlin/Android】lateinit(遅延初期化プロパティ)とは?使い方

【Kotlin/Android】lateinit(遅延初期化プロパティ)とは?使い方

この記事からわかること

  • Androidアプリ開発lateinit(遅延初期化プロパティ)とは?
  • 宣言方法や使い方
  • kotlin.UninitializedPropertyAccessException: lateinit property name has not been initialized原因

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

参考文献:公式リファレンス:enum classes

環境

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

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index