[Android] lateinit var VS by lazy

yeonjeen·2024년 7월 5일
0

Android

목록 보기
6/10
post-thumbnail

코틀린에서 늦은 초기화 기법은 아래와 같이 두 가지가 있다.

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로 선언

0개의 댓글