init блоковВ Kotlin инициализационный блок (init) используется для размещения логики инициализации, которая выполняется как часть первичного конструктора. Это удобное место для валидации или настройки свойств класса во время создания объекта.
Когда объект создаётся, Kotlin следует определённой последовательности:
init выполняются в порядке их появления в теле классаinitinit блоковТы можешь определить несколько init блоков в одном классе. Они выполняются последовательно, сверху вниз:
class Example {
init { println("First init block") }
init { println("Second init block") }
}
Вторичный конструктор всегда должен делегировать первичному конструктору с помощью ключевого слова this(). Благодаря этому делегированию блок init всегда выполняется до тела вторичного конструктора, независимо от того, какой конструктор используется для создания объекта:
class Example(val name: String) {
init {
println("Init block: $name") // выполняется первым
}
constructor(name: String, age: Int) : this(name) {
println("Secondary constructor") // выполняется вторым
}
}
init являются частью потока первичного конструктораinit выполняются в порядке появленияthis()init всегда выполняется перед телом любого вторичного конструктораКогда вызывается вторичный конструктор, блоки init выполняются перед телом вторичного конструктора, потому что вторичный конструктор должен делегировать управление первичному конструктору через this().
Новый — ещё не проверен сообществом
Вы