Junior — Middle
116
Kādā secībā notiek īpašību inicializācija un koda bloku izpilde, izveidojot objektu, ieskaitot companion object, init bloku, konstruktorā esošās mainīgās un parastās mainīgās?
Uzņēmumi, kur jautāja
Atbilde no AI
sobes.tech AI
При создании объекта в Kotlin порядок инициализации следующий:
- Инициализация companion object — происходит один раз при загрузке класса, до создания экземпляров.
- Инициализация свойств, объявленных в теле класса (включая свойства, объявленные вне конструктора) — они инициализируются в порядке объявления.
- Выполнение init блоков — выполняются в том порядке, в котором они объявлены в классе, сразу после инициализации свойств.
- Инициализация свойств, объявленных в конструкторе (например, параметры с val/var) — они инициализируются вместе с вызовом конструктора.
Пример:
class Example(val constructorProp: String) {
val property1 = println("property1 инициализирован")
init {
println("init блок 1")
}
val property2 = println("property2 инициализирован")
init {
println("init блок 2")
}
companion object {
init {
println("companion object инициализирован")
}
}
}
fun main() {
val example = Example("конструктор")
}
Вывод будет примерно:
companion object инициализирован
property1 инициализирован
init блок 1
property2 инициализирован
init блок 2
Таким образом, companion object инициализируется один раз при загрузке класса, затем при создании объекта инициализируются свойства и выполняются init блоки в порядке объявления, а параметры конструктора инициализируются при вызове конструктора.