Junior — Middle
Em que ordem ocorre a inicialização das propriedades e a execução dos blocos de código na criação de um objeto, incluindo o companion object, bloco init, variáveis no construtor e variáveis comuns?
sobes.tech IA
Resposta da IA
Ao criar um objeto em Kotlin, a ordem de inicialização é a seguinte:
- Inicialização do companion object — ocorre uma vez ao carregar a classe, antes de criar instâncias.
- Inicialização das propriedades declaradas no corpo da classe (incluindo propriedades declaradas fora do construtor) — elas são inicializadas na ordem em que são declaradas.
- Execução dos blocos init — eles são executados na ordem em que são declarados na classe, imediatamente após a inicialização das propriedades.
- Inicialização das propriedades declaradas na assinatura do construtor (por exemplo, parâmetros com val/var) — elas são inicializadas junto com a chamada do construtor.
Exemplo:
class Example(val constructorProp: String) {
val property1 = println("property1 inicializado")
init {
println("bloco init 1")
}
val property2 = println("property2 inicializado")
init {
println("bloco init 2")
}
companion object {
init {
println("companion object inicializado")
}
}
}
fun main() {
val example = Example("construtor")
}
A saída será aproximadamente:
companion object inicializado
property1 inicializado
bloco init 1
property2 inicializado
bloco init 2
Assim, o companion object é inicializado uma vez ao carregar a classe, depois, ao criar um objeto, as propriedades são inicializadas e os blocos init são executados na ordem de declaração, e os parâmetros do construtor são inicializados ao chamar o construtor.