lateinit:遅延初期化
java:
private LoginPresenter loginPresenter;
kotlin:
private lateinit var loginPresenter: LoginPresenter
by lazy:レイジー初期化
レイジー初期化は、プロパティに最初にアクセスするまでオブジェクトの一部がオンデマンドで作成されない一般的なパターンです。初期化プロセスが多くのリソースを消費し、オブジェクトを使用するときにデータが常に必要になるとは限りません。とても便利です
val nameB: String by lazy {
println("getLazy")
"123"
}
println(nameB)
println(nameB)
結果を入力します。
System.out: getLazy
System.out: 123
System.out: 123
最初に注意することは次のとおりです。
- by lazyは、valキーワードでマークされたプロパティにのみ作用できます
- プロパティを使用すると、「lazy{}」の内容が初期化されます
- また、プロパティが再度呼び出されると、結果のみが取得され、lazy{}の実行中のプロセスは再度実行されません。