안드로이드 코틀린으로 작업 중인데 lateinit으로 선언한 프로퍼티를 쓰려니까 앱이 죽으면서 UninitializedPropertyAccessException(초기화 안 된 프로퍼티 접근 예외)가 나요. 코드는 이렇게 생겼어요.
class Profile {
lateinit var name: String
fun show() {
println(name) // 초기화 전에 접근
}
}
name에 값을 넣기 전에 show()를 부르는 경로가 있어서 그런 거 같긴 한데, 접근하기 전에 초기화 됐는지 확인하는 방법이 따로 있을까요? 그리고 이럴 땐 lateinit 말고 by lazy 쓰는 게 더 나은 건지도 궁금해요. 둘 차이가 잘 안 잡히네요.