728x90
LateInit
- 변수에 객체를 할당하는 것을 선언과 동시에 하지 않고 할당하는 작업을 뒤로 미루게 해줌
- Nullabled 하지 않는 변수를 선언하면서 할당하는 작업을 뒤로 미루고 싶을 때 사용
- LateInit은 mutable 변수만 가능하기 때문에 var키워드 가진 변수에만 사용이 가능함
LateInit 예제
fun main() {
val lateInit = LateInitSample()
println(lateInit.getLateInitText())
lateInit.text = "할당완료"
println(lateInit.getLateInitText())
}
class LateInitSample {
lateinit var text: String
fun getLateInitText(): String {
//초기화 되면 text 반환, 안될경우 기본값 반환
if (::text.isInitialized) {
return text
}
return "기본값"
}
}
- 변수의 초기화 여부에 따라가 값이 달라짐
Lazy
- Lateinit하고 비슷하게 값을 지정하는 작업을 미뤄줌
- 할당되는 시점이 변수를 호출하는 시점임
- 코드의 실행시간을 최적화할 수 있음 (호출하는시점에 할당되기 때문)
- immutable 변수에만 적용이 가능하기 때문에 val키워드에만 사용이 가능함
Lazy 예제
fun main() {
val number: Int by lazy {
println("초기화할당")
5
}
println("시작")
println(number)
println(number)
}
//결과 시작 -> 초기화할당 -> 7 -> 7
- 두번째 number 출력시 이미 초기화를 했기 때문에 초기화할당 구문을 실행안함
'KOTLIN' 카테고리의 다른 글
[KOTLIN] 코루틴 (0) | 2022.06.01 |
---|---|
[KOTLIN] NULL SAFTY / NULL 처리방법 (0) | 2022.05.30 |
[KOTLIN] 시퀀스 (SEQUENCES) (0) | 2022.05.22 |
[KOTLIN] 확장함수 (0) | 2022.05.22 |
[KOTLIN] Scope 함수 (0) | 2022.05.18 |