lateinit and Lazy Initialization
Use lateinit for late-assigned properties and by lazy for deferred computation.
Two Tools for Late Setup
Sometimes you can't initialize a property at construction time. Kotlin gives you lateinit (for var, assigned later) and by lazy (for val, computed on first access).
lateinit Basics
lateinit var defers initialization. The variable must be a non-null, non-primitive var. Access before assignment throws UninitializedPropertyAccessException.
class Service {
lateinit var name: String
fun init(value: String) { name = value }
}
fun main() {
val s = Service()
s.init("MyService")
println(s.name)
}All lessons in this course
- Primary Constructor and Property Parameters
- init Blocks and Initialization Order
- Custom Getters and Setters with field
- lateinit and Lazy Initialization