KOTLIN

[KOTLIN] LATEINIT / LAZY

집한구석 2022. 5. 22. 19:17
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