1) 초기화 지연
초기화 지연 : lateinit, lazy
정의: 변수를 선언할 때 값을 지정하지 않고, 나중에 지정할 수 있는 방법
목적: 메모리를 효율적으로 사용하기 위해서, null safe 한 value 를 사용하기 위해서
2) lateinit, var
- 변수 타입을 지정해줘야 함
- Primitive 타입은 사용할 수 없음
- 선언 후, 나중에 초기화 해줘도 됨
lateinit var text :String // 선언 ( 타입 지정해주어야 함)
// lateinit var age : Integer // Int ( primitive type 는 lateinit 불가능 )
// 참조타입은 lateinit 가능
fun main() {
// text 초기화 되기 전에, text 에 접근하면
// lateinit property text has not been initialized 오류 발생
text = "name" // 초기화
// age = Integer(10)
print(text)
}
3) lazy, val
- 선언과 동시에 초기화를 해야 함
- 호출시점에 초기화가 이루어짐
val test : Int by lazy {
println("초기화 중")
100 // test 를 호출하는 시점에 초기화
}
fun main() {
println("메인 함수 실행")
println("초기화 한 값 $test")
println("두번째 호출 $test")
}
lazyinit 은 lateinit과 달리 선언과 함께 초기화를 해주어야한다는 차이점이 있다.
'안드로이드 앱(Kotlin|Java) > [2025~] 안드로이드 앱' 카테고리의 다른 글
Part0_Ch03_01 Android OS (0) | 2025.01.24 |
---|---|
Part0_Ch02_06 object, companion object (1) | 2025.01.24 |
Part0_Ch02_03 Scope Function (0) | 2025.01.24 |
Part0_Ch02_02 확장함수 (1) | 2025.01.24 |
Part0_Ch02_01 람다 (0) | 2025.01.24 |