본문 바로가기

Kotlin

Kotlin 지연 초기화 lateinit / by lazy

728x90

늦은 초기화를 하는 이유 : 변수를 꼭 사용하지 않을 경우 메모리 낭비

lateinit과 by lazy의 차이

lateinit

  • var
  • getter/setter 정의 x
  • 초기화 꼭 하고 사용해야함
  • 직접적 프로퍼티

 

by lazy

  • val (생성 후 값을 변경 할 수 없다.)
  • 선언시 초기화 코드
  • 선언된 프로퍼티를 위임하는 것

 

필드에 최초 접근했을 때만 값을 초기화 "지연 초기화"

 

by lazy처럼 위임하지 않지 않는 방법도 있다.

class LazyProperty(val initializer: () -> Int) {
	var age:Int ?= null
    val lazy: Int
        get() {
			if(age == null){
                age = initializer()
            }
            return age!!
        }
}

'Kotlin' 카테고리의 다른 글

Kotlin Delegated Property  (0) 2021.04.01
Kotlin field  (0) 2021.04.01
Kotlin map flatmap  (0) 2021.03.31
Kotlin fold reduce  (0) 2021.03.31
Kotlin object  (0) 2021.03.30