아이템 8: 적절하게 null을 처리하라 관련 내용 입니다.
var로 선언된 변수를 나중에 초기화할 수 있게 해준다.
주로 null
이 허용되지 않는 타입에 대해 나중에 초기화를 하기 위해 사용된다.
클래스 내부에서만 사용 가능하며, 원시 타입 (Int
, Long
, Float
등)에는 사용할 수 없다.
특징
class Example {
lateinit var name: String
fun initializeName() {
name = "Kotlin"
}
fun printName() {
if (::name.isInitialized) {
println(name)
} else {
println("Name is not initialized")
}
}
}
fun main() {
val example = Example()
example.initializeName()
example.printName()
}
notNull 델리게이트는 Delegates 객체의 notNull 함수를 사용하여 초기화되지 않은 변수를 나중에 초기화하고, 초기화 전에는 IllegalStateException 예외를 발생시킨다.
lateinit과 달리 val에도 사용할 수 있다.
특징
import kotlin.properties.Delegates
class Example {
var name: String by Delegates.notNull<String>()
fun initializeName() {
name = "Kotlin"
}
fun printName() {
try {
println(name)
} catch (e: IllegalStateException) {
println("Name is not initialized")
}
}
}
fun main() {
val example = Example()
example.initializeName()
example.printName()
}