내가 변수 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 |
댓글