모바일 개발하는 자바리안의 메모장

Kotlin - lazy 본문

Android/Android.Kotlin

Kotlin - lazy

자바리안 2021. 12. 22. 00:08
반응형

Kotlin은 변수 초기화 지연을 도와주는 위한 유용한 기능이 존재하는데,

나에게 매우 잘 어울리는 키워드인 lazy 키워드다.

lazy초기화의 경우 read-only 변수, 즉 val 변수에만 사용할 수 있다.

 

우선 예제 코드를 보자 :

class JavarianActivity : AppCompatActivity(){
    val sampleTextView: TextView by lazy { // Lazy init.
    	findViewById(R.id.tv_1) as TextView
    }
    
    fun updateTextView() {
        sampleTextView.text = "Hi"
    }
}

앞서 설명한 바와 같이, 코틀린에서의 모든 변수(property)는 초기화를 필수로한다.

일반적인 초기화라면 sampleTextView를 선언하는 동시에 무조건 초기화를 해줘야하겠지만,

 

lazy 초기화는 뜻 자체의 느낌을 잘 살려 초기화를 보류하고, 나중에 실제로 변수가 최초 사용되는 시점에 초기화해준다.

위 샘플 코드의 경우 게으른 sampleTextView를  사용하는 updateTextView()가 호출된 뒤, text를 입력하기 전에 초기화가 이루어진다.

 

여기서 또 주목해야할 건 lazy 앞에 붙은 by 라는 키워드인데 해당 키워드는 위임(delegation)을 의미한다.

즉, sampleTextView이 뒤늦게 초기화를 하는 건 변수 스스로가 아닌, 초기화 역할을 위임 받은 by 뒤에 명시한 lazy(함수)가 처리 해주는 것이다.

 

실제 변수가 사용될 때 초기화를 해주기 때문에 초기화 이후 사용 빈도가 적거나 나중에 사용되는 경우, 또는 의도치 않게 전혀 사용되지 않는 경우를 생각해본다면,, 보다 유~연~하게 효율적으로 메모리를 사용할 수 있다는 큰 장점이 있다.

(단점도 물론 있습니다.. 혹시 궁금하면 댓글로 부탁드립니다.)

반응형

'Android > Android.Kotlin' 카테고리의 다른 글

Kotlin - object & companion object  (0) 2023.04.14
Kotlin - Null Safety (?, !!)  (0) 2021.12.14
Kotlin - 변수 초기화(Initialization)  (0) 2021.12.14
Comments