Junior — Middle
¿En qué orden se inicializan las propiedades y se ejecutan los bloques de código al crear un objeto, incluyendo el companion object, el bloque init, las variables en el constructor y las variables normales?
sobes.tech AI
Respuesta de la IA
Al crear un objeto en Kotlin, el orden de inicialización es el siguiente:
- Inicialización del companion object — ocurre una vez al cargar la clase, antes de crear instancias.
- Inicialización de las propiedades declaradas en el cuerpo de la clase (incluyendo propiedades declaradas fuera del constructor) — se inicializan en el orden en que se declaran.
- Ejecución de los bloques init — se ejecutan en el orden en que se declaran en la clase, inmediatamente después de la inicialización de las propiedades.
- Inicialización de las propiedades declaradas en el declaración del constructor (por ejemplo, parámetros con val/var) — se inicializan junto con la llamada al constructor.
Ejemplo:
class Example(val constructorProp: String) {
val property1 = println("property1 inicializado")
init {
println("bloque init 1")
}
val property2 = println("property2 inicializado")
init {
println("bloque init 2")
}
companion object {
init {
println("companion object inicializado")
}
}
}
fun main() {
val example = Example("constructor")
}
La salida será aproximadamente:
companion object inicializado
property1 inicializado
bloque init 1
property2 inicializado
bloque init 2
De esta manera, el companion object se inicializa una vez al cargar la clase, luego, al crear un objeto, se inicializan las propiedades y se ejecutan los bloques init en el orden de declaración, y los parámetros del constructor se inicializan al llamar al constructor.