늦은 초기화 기법에는 lateinit과 lazy가 있다.

늦은 초기화 기법을 사용하는 이유?

→ 예를 들어서 변수에 값을 할당 시켰다고 가정하고(var number = 0), 해당 변수를 바로 사용하지 않았다면 이 변수를 포함하는 코드는 실행될 때 마다 변수에 값을 할당하게 된다. 실행시 변수를 만들고 초기화 해주는 작업에서 시간, 메모리 낭비로 이어질 수 있다.(먼저 사용될 데이터들이랑 같이 초기화 될 경우)

lateinit

// 전역변수
lateinit var str: String

str = "str"

위 코드는 lateinit의 사용 방법이다. lateinit을 사용하려면 몇 가지 제약사항이 있다.

미래의 발생할 property에 대해서 null check를 회피할 수 있다. → lateinit은 nullable X

var를 사용하므로 초기화 된 후 값 변경이 가능하다.

lateinit var의 초기화 여부 확인

lateinit var 가 이미 초기화 되었는지 확인하려면 .isInitialized 를 사용하면 된다.

if(!str.isInitialized) {
		// 초기화가 안되었을 경우 처리
} 

by lazy

val str: String by lazy {
		"str"
}

위 코드는 by lazy의 사용 방법이다. by lazy를 사용할 때 제약사항은