상세 컨텐츠

본문 제목

코틀린(Kotlin) - lateinit ,lazy (늦은 초기화 방법)

Kotlin 자료실/알고 있으면 유용한 꿀팁

by Victorywskim 2020. 3. 25. 17:26

본문

반응형

코틀린은 기본적으로 NULL을 허용하지 않아서 무조건 값을 체워넣거나

명시적인 데이터의 입력 혹은 널 허용에 대해 고려해야 한다고 생각할수있으나

 

늦은 초기화를 통해 필요한 경우에만 값을 추가하여 사용할수도 있다.

 

예제는 다음과 같다.

private val value1 : String by lazy { 
	println("초기화")
	getValue() 
}
private lateinit var value2 : String


fun getValue(): String {
	return "value1"
}

fun main(){
	value2 = "value2"
    
}

 

by lazy의 경우 일반적인 변수 선언와 동일하게 값을 대입하는 것으로 보이지만, 사실 변수를 사용하기 전에 값을 대입한다. 따라서 value1 변수를 2번 실행하게 되면 "초기화"라는 로그는 1번만 출력되는 것을 확인 할 수 있다.

 

lateinit의 경우 기본적으로 null의 상태를 유지하고 있다가 사용하기 직전에 값을 대입하게 된다.

 

위 2가지 방법의 가장 큰 차이점은 다음과 같다.

  변수 선언 NULL 변수 대입
by lazy val X 최초 1회
lateinit var O 여러번 선언 가능

상황에 맞게 잘 활용하면 빌드 시 시간 절약이나 메모리 절약에 도움이 많이 될듯 하다.

반응형