본문 바로가기
Dev/Kotlin

Kotlin Lazy & Lateinit

by zemba 2021. 11. 23.
반응형
SMALL

Kotlin에서 늦은초기화라고 불리는 두가지 키워드가 있습니다.

바로 Lazy와 Lateinit인데 두가지의 성격이 약간 다릅니다.

 

우선 참조한 블로그의 링크를 첨부합니다.

출처 : https://codechacha.com/ko/kotlin-late-init/

 

Kotlin - lateinit과 lazy로 초기화를 지연하는 방법

kotlin lateinit과 lazy는 코틀린에서 프로퍼티 초기화를 늦추는 키워드입니다. 초기화 지연은 사용할지 모르는 데이터를 미리 초기화할 필요가 없어서 성능 향상에 도움이 됩니다. 코틀린에서 제공

codechacha.com

작성자분의 내용이 참 좋은것 같습니다.

결론적으로 정리를 해보면

 

lateinit은 초기화를 진행하지 않고 나중에 설정할수 있지만 초기화를 처리하지 않고 사용했을 경우에는 Exception이 발생하고 Lazy는 초기화를 하지않고 진행하다가 사용되는 시점에서 설정된 초기값으로 초기화를 진행합니다.

결국 lazy는 값이 지정되어 있기 때문에 변경이 불가하여 val 키워드로 선언하여 사용하고 lateinit은 늦게 초기화 하지만 원하는 값으로 초기화가 가능하기때문에 var 키워드로 선언하여 사용한다고 이해하면 편할것 같아보입니다.

 

최종적으로 lazy와 lateinit의 차이점을 정리한 내용입니다.

  • lazy는 val 프로퍼티에만 사용할 수 있지만, lateinit은 var에만 사용할 수 있습니다
  • 그렇기 때문에 lateinit은 immutable(불변) 프로퍼티가 아닙니다.
  • lateinit은 nullable 또는 primitive type의 프로퍼티를 사용할 수 없습니다. 반면에 lazy는 모두 가능합니다.
  • lateinit은 직접적으로 프로퍼티를 갖고 있는 구조지만(자바에서 field를 갖고 있음), lazy는 Lazy라는 객체 안에 우리가 선언한 field를 갖고 있습니다. 그래서 lazy의 프로퍼티를 직접 변경할 수 없습니다.

 

반응형
LIST

'Dev > Kotlin' 카테고리의 다른 글

Kotlin Project 생성 및 하위 Module 추가  (0) 2021.11.18

댓글