lateinit는 Kotlin에서 나중에 초기화될 프로퍼티를 선언하기 위해 사용되는 키워드입니다. 코틀린은 널 안정성(null safety)을 중요시하는 언어이기 때문에, 프로퍼티를 선언할 때 반드시 초기화를 해주거나 null 가능 타입으로 선언해야 합니다. 그러나, 어떤 경우에는 클래스의 초기화 과정 중에 바로 프로퍼티 값을 결정하기 어렵거나, 의존성 주입 등으로 인해 객체 생성 이후에 초기화가 이루어져야 할 경우가 있습니다. 이런 경우에 lateinit 키워드를 사용하면 초기화를 지연시킬 수 있습니다.
lateinit의 주요 특징:
- 초기화 지연: lateinit 키워드를 사용하면 선언 시점에서 바로 초기화하지 않고, 나중에 초기화할 수 있습니다.
- 널이 아닌 타입 사용 가능: lateinit으로 선언된 프로퍼티는 널이 아닌 타입으로 선언할 수 있습니다. 따라서 널 체크 없이 해당 프로퍼티를 안전하게 사용할 수 있습니다.
- 변수(var)에만 사용: lateinit은 오직 mutable한 변수인 var에만 사용할 수 있습니다. 불변인 val에는 사용할 수 없습니다.
- 기본 타입에는 사용 불가: Int, Float 같은 기본 타입에는 lateinit을 사용할 수 없습니다. 참조 타입에만 사용할 수 있습니다.
- 초기화 여부 확인: ::프로퍼티명.isInitialized를 통해 lateinit 프로퍼티가 초기화되었는지 확인할 수 있습니다. (코틀린 1.2 이상에서 지원)
사용 예제
class MyTestClass {
lateinit var myProperty: String
fun initialize() {
myProperty = "Hello"
}
}
위 예제에서 MyTestClass는 lateinit으로 선언된 myProperty를 포함하고 있습니다. 이 프로퍼티는 initialize 함수 호출을 통해 나중에 초기화될 수 있습니다. 이렇게 lateinit을 사용하면 클래스의 유연한 설계가 가능해지며, 특히 프레임워크나 라이브러리와의 연동에서 유용하게 사용될 수 있습니다.
반응형
'Android > Kotlin' 카테고리의 다른 글
[Kotlin] 코틀린의 Unit 타입: 무엇이고 어떻게 사용하는가? (0) | 2024.06.14 |
---|---|
[Kotlin] Kotlin에서 class와 object의 차이점 및 활용 방안: 싱글톤 패턴과 유연성 비교 (0) | 2024.05.28 |
[Kotlin] Kotlin의 companion object 이해하기 (0) | 2024.04.30 |
[Kotlin,Java] 코틀린과 자바에서 MutableList 선언 및 조작의 차이점 탐구 (2) | 2024.04.23 |
[Kotlin,Java] 자바와 코틀린에서의 프로퍼티 선언 방식의 차이점 설명 (3) | 2024.04.21 |