lateinit
- 코틀린에서는 클래스 안의 널이 될 우 없는 프로퍼티를 생산자 안에서 초기화하지 않고 특별한 메서드 안에서 초기화 할 수 없다.
- 코틀린에서는 일반적으로 생성자에서 모든 프로퍼티를 초기화해야함
- 프로퍼티 타입이 널이 될 수 없는 타입이라면 반드시 널이 아닌 값으로 프로퍼티를 초기화
- 그런 초기화 값을 제공할수 없으면 널이 될 수 있는 타입을 사용할 수 밖에 없는데, 이러면 모든 접근에 대해 널 검사를 넣거나 !!연산자를 서야한다.
- lateinit
나중에 초기화하는 프로퍼티는 항상 var여야 한다.
val 프로퍼티는 final필드로 컴파일되며, 생성자 안에서 반드시 초기화해야 한다.
이점
- 늦은 초기화의 안전성: lateinit을 사용하면 나중에 초기화할 변수임을 명확하게 지정할 수 있습니다. 이로 인해 런타임 중 변수 초기화의 실수를 줄일 수 있다.
- 초기화 지연: 모든 변수를 초기화하는 것은 메모리와 성능에 영향을 줄 수 있습니다. lateinit을 사용하면 필요한 시점에만 변수를 초기화할 수 있으므로, 리소스를 효율적으로 사용할 수 있습니다.
- 의존성 주입과의 통합: 의존성 주입 프레임워크를 사용할 때, 변수가 선언 시점에서는 초기화되지 않을 수 있습니다. lateinit을 사용하면 이런 상황을 쉽게 처리할 수 있습니다.
- 코드 간결성: 초기화가 복잡하거나 다른 곳에서 이루어져야 하는 경우, lateinit을 사용하면 코드를 더 간결하고 명확하게 만들 수 있다.