728x90
초기화 지연 lateinit, lzay
- 정의 : 변수를 선언할 때 값을 지정하지 않고, 나중에 지정할 수 있는 방법
- 목적 : 메모리 효율적으로 사용하기 위해서, null safe한 value를 사용하기 위해서
- lateinit, var
- 변수 타입을 지정해줘야함
- primitive 타입은 사용할 수 없음
- 선언 후, 나중에 초기화 해줘도 됨
- lazy, val
- 선언과 동시에 초기화를 해야함
- 호출시점에 초기화가 이루어짐
코드
package com.example.kotlin
//var text :String? = null // 이렇게 하면 밑에서 사용할 때마다 null safe하게 쓰기 위해 ?. 해줘야한다.
lateinit var text : String
val test : Int by lazy {
println("초기화 중")
100
}
lateinit var age : Integer
fun main() {
text = "name" // 이 부분 안 해주면 exception 난다.
age = Integer(10)
println(text)
println(age)
println("메인함수 실행")
println("초기화 한 값 $test") //test 호출하지 않으면 초기화조차 되지 않음. 필요하지 않은 값 메모리에 올리지 않음
println("두번째 호출 $test")
//text?.
}
//data binding, view binding, view model 초기화할 때
// 상단에 선언한 후 접근하는 경우 많아서 이때 주로 사용728x90
'코틀린(Kotlin)' 카테고리의 다른 글
| (코틀린/Kotlin) Object, Companion object (0) | 2024.02.08 |
|---|---|
| (코틀린/Kotlin) Data, Sealed class (0) | 2024.02.08 |
| (코틀린/Kotiln) Scope function (0) | 2024.02.08 |
| (코틀린/Kotlin) 확장함수 (0) | 2024.02.08 |
| (코틀린/Kotlin) Lambda(람다) (0) | 2024.02.08 |