본문 바로가기
Android 개발/Kotlin

lateinit 에 관한 정리 # Kotlin

by Developer88 2023. 4. 7.
반응형

오늘은 Kotlin 의 lateinit 에 대해서 정리해 보도록 하겠습니다.

 

1. lateinit

lateinit은 키워드 자체로 설명이 되어있는데요.

초기화(initialize)가 late하게 된다는 의미를 가지고 있습니다.

 

이 키워드를 사용하면, 컴파일러는 변수 선언시에 초기화가 되지 않아도 아무런 에러를 보여주지 않구요.

개발자가 원하는 시점에 초기화를 할 수 있도록 해 줍니다.

 

게다가 lateinit 을 이용해서 선언할 경우,

onDestroy에서 null 로 다시 값을 넣어줄 필요가 없습니다.

이 객체는 자동으로 가비지콜렉터에 의해서 해당변수가 포함된 클래스가 destroy 될 때 함께 처리됩니다.

 

예를 들어서 아래와 같이 adView나 adRequest를 초기화 하지 않은 상태에서 미리 선언하는 것 이지요.

 

 

 

2. lateinit 선언시 주의할 점들

lateinit 을 사용할 때는 다음의 점들에 주의를 해야 합니다.

 

  • null이나 nullable 한 값으로 초기화 할 수 없음
  • 커스텀한 getter 나 setter 를 사용한 프로퍼티는 않됨
  • val 로는 선언불가 (var 로만 선언해야 함)

 

한가지 주의할 점은,

초기화되지 않은 변수에 접근하게 되면,

UninitializedPropertyAccessException 을 보게 된다는 것 입니다.

따라서, 사용하는 개발자는 사용전에 초기화가 되도록 코딩을 해야합니다.

 

3. lateinit 이 초기화 되었는지 확인하는 방법

만약 위에서 예로 들었던, adView를 기준으로 한다면 다음과 같은 방법으로,

lateinit이 초기화 되었는지 확인하여서 UninitializedPropertyAccessException 를 미연에 방지할 수 있습니다.

 

if (::adView.isInitialized) {
    println(foo.bar)
}

 

 

728x90

댓글