정리가 필요한 카테고리(추후 정리)/Android, iOS

Kotlin] lateinit과 lazy

TwinParadox 2018. 5. 3. 23:31
728x90

lateinit과 lazy는 지연 초기화를 위해 사용함.

클래스 생성 동시에 사용하지 않는 변수에 대해서는 늦게 초기화할 때 사용하며, null은 필요한 경우에 한해서 명시.


lateinit

var에 사용하고, var이기 때문에 초기화 값을 변경할 수 있음.

null을 통해서 초기화하지 않고, 초기화 전까지 해당 var 변수에는 접근하지 못함.

변수에 대해서 getter, setter를 정의할 수 없음.

모든 변수에서 가능한 것은 아니며, primitive type에 대해서는 사용 불가능.


lazy

val에 사용하고, 호출 시점에 by lazy 정의로 초기화.

val에서만 사용하기 때문에 불변이며, 초기화를 위해서 함수명을 한 번이라도 적어줘야 함.

lazy을 사용하는 경우 기본 Synchronized로 동작.



값의 교체 유무나 Nullable 필요 여부에 따라서 적절히 선택하여 사용.


728x90