Android(Kotlin)

kotlin lateinit lazy

개복치 개발자 2021. 8. 22. 04:08

 안드로이드에서 코틀린을 사용하다 보면 종종 만나는 

 

 lateinit

 lazy

 

 에 대해서 알아보겠습니다.

 

 이름에서처럼 늦게 시작하거나 게으른 것 처럼 동작하는데, 하나씩 좀 살펴보겠습니다.

 

 - lateinit

 

 아래에서 볼 수 있듯이, 먼저 선언해놓고 타입을 지정한 이후 값을 아래에서 입력할 수 있습니다.

 

 - lazy

 

 아래에서 볼 수 있듯이, lazy를 read-only로 선언하고 이후에 값을 초기화 해줄 수 있습니다.

 

 그럼 2개의 차이점은 무엇일까 알아보면

 

 lateinit -> var

 lazy -> val

 

 로 선언된 것을 확인할 수 있습니다.

 

 때문에, lateinit은 값이 변할 수 있는 경우, lazy는 read-only로만 쓰이는 값에 쓰는 것이 적절합니다.

 

 

 

 참조

 

 - https://medium.com/til-kotlin-ko/kotlin-delegated-property-by-lazy%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-%EB%8F%99%EC%9E%91%ED%95%98%EB%8A%94%EA%B0%80-74912d3e9c56

 

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

 

 - https://holika.tistory.com/entry/%EB%82%B4-%EB%A7%98%EB%8C%80%EB%A1%9C-%EC%A0%95%EB%A6%AC%ED%95%9C-Kotlin-lateinit%EA%B3%BC-by-lazy%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90

 

[내 맘대로 정리한 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