Nullable 변수로 선언하여 null로 초기화하는 경우, 해당 변수에 접근할 때마다 safe-call을 사용해야
-> lateinit 변수로 선언하여 번거로움 없앰 & 가독성 좋아짐
lateinit 속성을 사용할 때 주의할 점
lateinit 변수로 선언 후 초기화하기 전 변수 접근 시, 오류 발생 lateinit property subject has not been initialized
lateinit 키워드의 특징
var로 선언된 클래스 프로퍼티에만 사용 가능
기본 자료형(Int, Long, Double, Float 등) 사용 X
Nullable 타입 사용 X
lateinit으로 선언된 변수는, Nullable 타입으로 컴파일되어, 변수 초기화가 될 때까지 null 값을 지닌다
-> 기본 자료형(Primitive Type)은 Non-Nullable 타입이기 때문에 lateinit 키워드를 사용할 수 X
-> Nullable 타입은 변수가 초기화되지 않은 상태인지 null로 초기화된 상태인지 구분할 수 없어 lateinit 키워드를 사용할 수 X