KOTLIN · 기초 문법
lateinit & lazy 지연 초기화
생성 시점에 초기화할 수 없는 변수를 안전하게 다루는 두 가지 방법.
기초 문법중급lateinitlazy지연초기화by
핵심 설명
생성 시점에 초기화할 수 없는 변수를 안전하게 다루는 두 가지 방법.
Kotlin code
// lateinit — var에만 사용, non-null 보장 필요할 때
// (주로 DI, Android ViewModel, 테스트)
class UserService {
lateinit var repository: UserRepository
fun setup() {
repository = UserRepository()
}
fun getUser() {
// 초기화 전 접근 시 UninitializedPropertyAccessException
if (::repository.isInitialized) {
repository.find()
}
}
}
// lazy — val에 사용, 첫 접근 시 한 번만 초기화
// 기본적으로 thread-safe (LazyThreadSafetyMode.SYNCHRONIZED)
class Config {
val heavyData: List<String> by lazy {
println("처음 한 번만 실행")
loadFromDisk() // 비용이 큰 초기화
}
}
fun loadFromDisk() = listOf("data1", "data2")학습 팁
lazy는 기본적으로 thread-safe합니다. 단일 스레드 환경에서 성능을 높이려면 by lazy(LazyThreadSafetyMode.NONE)을 사용하세요.
주의할 점
lateinit은 Int, Boolean 같은 원시 타입에 사용할 수 없습니다. Nullable 타입에도 사용 불가입니다.
자주 묻는 질문
lateinit & lazy 지연 초기화란 무엇인가요?
생성 시점에 초기화할 수 없는 변수를 안전하게 다루는 두 가지 방법.
lateinit & lazy 지연 초기화 학습 시 주의할 점은 무엇인가요?
lateinit 은 Int , Boolean 같은 원시 타입에 사용할 수 없습니다. Nullable 타입에도 사용 불가입니다.
Continue Learning
Kotlin 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.