1️⃣ lateinit
2️⃣ by lazy
간단히 설명하자면,
우리가 프로퍼티의 초기값을 정의하기 어려울 경우, 사용하게 될 문법이다.
class Assertive {
val what: String? = null
}
🌟위 처럼 사용할 수 있겠지만, 코틀린은 'null'을 지양하지 않는가?
그렇기에 우리는, 아래와 같이 사용할 수 있다.
class Assertive {
lateinit var what: String
val why: String by lazy { "body" }
}➡️
보는 바와 같이, var/ val 두 차이이다.
간단히 말해, 가변/불변 차이이다.
💚 lateinit : 초기화 이후에 계속하여 값이 바뀔 수 있을 때
💚 by lazy : 초기화 이후에 읽기 전용 값으로 사용할 때
본 내용을 이제 다루어볼건데, 프로퍼티들을 초기화 하기위해, by lazy에 관해 알아보던 중 우연히 알게 된 정보이다.
➡️ 보통 by lazy는 읽기전용으로, 불변의 특성을 갖기에 아래와 같은 용도로 자주 사용하게 된다.
➡️ 더 이상 변하지 않는, Adapter 혹은 이전 엑티비티에서의 Intent Bundle Extra 등을 현재 액티비티 멤버 변수에 by lazy로 선언