728x90
늦은 초기화를 하는 이유 : 변수를 꼭 사용하지 않을 경우 메모리 낭비
lateinit과 by lazy의 차이
lateinit
- var
- getter/setter 정의 x
- 초기화 꼭 하고 사용해야함
- 직접적 프로퍼티
by lazy
- val (생성 후 값을 변경 할 수 없다.)
- 선언시 초기화 코드
- 선언된 프로퍼티를 위임하는 것
필드에 최초 접근했을 때만 값을 초기화 "지연 초기화"
by lazy처럼 위임하지 않지 않는 방법도 있다.
class LazyProperty(val initializer: () -> Int) {
var age:Int ?= null
val lazy: Int
get() {
if(age == null){
age = initializer()
}
return age!!
}
}
'Kotlin' 카테고리의 다른 글
Kotlin Delegated Property (0) | 2021.04.01 |
---|---|
Kotlin field (0) | 2021.04.01 |
Kotlin map flatmap (0) | 2021.03.31 |
Kotlin fold reduce (0) | 2021.03.31 |
Kotlin object (0) | 2021.03.30 |