본문 바로가기
Develope/android

[Android/Kotlin] kotlin.UninitializedPropertyAccessException: lateinit property ... has not been initialized Error 에러, lateinit, by lazy

by 개발자도구 2024. 4. 17.
반응형


kotlin.UninitializedPropertyAccessException: lateinit property ... has not been initialized 

이 오류는 lateinit으로 선언된 속성이 초기화되지 않은 채로 접근되었을 때 발생하는 에러이다.

 

lateinit 키워드는 나중에 초기화될 것을 의미하는데, 초기화 되지 않은 {@@@}가 사용 됨에 따라 나타나는 에러이다.

 

해결법

- var 앞에 lateinit 사용하여 선언된 변수에 초기화가 되기전에 사용이 되는 경우

lateinit var name: String

username = name  -> Exception 발생

 

아래와 같이 값이 들어가 있어야 한다.

lateinit var name: String

name = "developertools"
username = name

 

 

- val 에서만 사용 가능하고, by lazy 사용하여 선언

val name: String by lazy { "developertools" }

 

 

 

추가로, Activity, Fragment의 생명주기에 의해 onDestory가 발생하여, 초기화 된 값을 잃어 버릴때도 발생한다.

 

반응형

댓글