Cute Apple
본문 바로가기
개발/Kotlin

[Kotlin] lateinit vs by lazy

by 미댕댕 2022. 7. 30.

내가 변수  x 를 사용할 예정인데 x 의 처음 상태를 정의하기 애매할때

우리는 이런식으로 선언할 수 있다

var a : String? = null

 

그러나❗❗

Kotlin 의 null 을 지양하는 기법으로 인해 우리는 굳이 위험하게 null 이 아닌 다른 문법을 사용할 수 있다.

그게 바로 lateinit 과  lazy 이다

 

 

lateinit 

  • Nullable 하지 않은 변수를 선언하면서 초기화하는 작업을 뒤로 미루고 싶을때 사용
  • mutable 변수만 가능하기때문에 var 만 사용가능
  • 초기화 하지 않으면 에러가 발생
lateinit var x : String

 

 

초기화 하지 않을시 오류

Exception in thread "main" kotlin.UninitializedPropertyAccessException: lateinit property text has not been initialized

위와 같이 컴파일 단계에서 오류가 발생하기때문에 잠재적으로 오류를 방지

by lazy

  • 의존하는 값들이 초기화가 된 이후에 값을 채워넣고 싶을떄 사용
  • 즉 호출시 어떻게 초기화를 해줄지에 대해 정의
  • 단 한번의 늦은 초기화 후에는 값이 불변함을 보장
    private val resultTextView: TextView by lazy {
        findViewById(R.id.resultTextView)
    }

 

 

반응형

'개발 > Kotlin' 카테고리의 다른 글

[Kotlin] Serializable vs Parcelable  (0) 2022.09.07
[Kotlin] Data class 와 copy()  (0) 2022.08.03
[Kotlin] Scope Function  (0) 2022.07.27
[Kotlin] 코틀린이란?  (0) 2022.07.25

댓글