Kotlin - クラス - by lazy
公開日:2019-11-25 更新日:2019-11-29
[Kotlin]
1. 概要
by lazy を使うと、プロパティが参照された時に1度だけ初期化処理を行うことができます。
プリミティブ型でも使用可能です。
初期化処理はラムダ式で行い、戻り値がプロパティに設定されます。
プリミティブ型でも使用可能です。
初期化処理はラムダ式で行い、戻り値がプロパティに設定されます。
2. by lazy
class Test {
// var value: Int by lazy { init() } // var にするとエラー
val value: Int by lazy { initValue() }
private fun initValue():Int {
println("initValue");
return 100
}
}
fun main() {
val obj = Test()
println("Test の生成")
println(obj.value) // 100
println(obj.value) // 100
}
実行結果
オブジェクト生成時には初期化処理が実行されていないことがわかります。
Test の生成
initValue
100
100