안드로이드에서 코틀린을 사용하다 보면 종종 만나는
lateinit
lazy
에 대해서 알아보겠습니다.
이름에서처럼 늦게 시작하거나 게으른 것 처럼 동작하는데, 하나씩 좀 살펴보겠습니다.
- lateinit
아래에서 볼 수 있듯이, 먼저 선언해놓고 타입을 지정한 이후 값을 아래에서 입력할 수 있습니다.
- lazy
아래에서 볼 수 있듯이, lazy를 read-only로 선언하고 이후에 값을 초기화 해줄 수 있습니다.
그럼 2개의 차이점은 무엇일까 알아보면
lateinit -> var
lazy -> val
로 선언된 것을 확인할 수 있습니다.
때문에, lateinit은 값이 변할 수 있는 경우, lazy는 read-only로만 쓰이는 값에 쓰는 것이 적절합니다.
참조
Kotlin의 프로퍼티 위임과 초기화 지연은 어떻게 동작하는가
If you wanna read English version, please see here.
medium.com
- https://thdev.tech/kotlin/2020/11/27/kotlin_delegation/
Kotlin Delegation을 알아보고, Delegated Properties와 class에서의 Delegation을 알아본다. |
I’m an Android Developer.
thdev.tech
[내 맘대로 정리한 Kotlin] lateinit과 by lazy의 차이점
늦은 초기화 가끔 클래스 안에서 '내가 이 변수를 쓸 것이다'라고 선언만 해 놓고, 나중에 값을 사용할 수 있게 되면 그 때 값을 입력해 주고 싶을 때가 있다. 이럴 때 사용 가능한 방법 중에는 아
holika.tistory.com
'Android(Kotlin)' 카테고리의 다른 글
Unable to load class 'javax.xml.bind.JAXBException'. (0) | 2021.08.22 |
---|---|
DiffUtil (0) | 2021.08.22 |
rxAndroid, rxJava, rxKotlin (0) | 2021.08.22 |
Android Room (0) | 2021.08.22 |
Execution failed for task ':app:kaptDebugKotlin' (0) | 2021.08.21 |