【Kotlin】lateinitの使い方

lateinitって?

JavaをKotlinにconvertしたら、

property must be initialized or be abstract

っておこられて、IntelliJに直してもらおうとしたら

add lateinit modifier

と提案されました。

lateinitってなに( ˊ࿁ˋ )?

lateinit:
KotlinでNonNullなプロパティーの初期化をconstructorより後に遅らせられる機能。

使い方

(property must be initialized or be abstract)
var student: String
(lateinit)
lateinit var yCookie: String

制約

いくつか決まりごとがあるみたい。

  • valには使えない(以前は使えたが今は使えない)

  • Nullableには使えない

  • プリミティブ型には使えない

  • 使うことでJavaからはそのプロパティーのfieldがプロパティーと同じvisibilityで見える

  • private 以外にすると外から見える可能性がある → 意図しない使い方になる可能性

参考

lateinitの行儀の良い使い方 - Takuji->find;