Junior — Middle
V akom poradí sa inicializujú vlastnosti a vykonávajú bloky kódu pri vytváraní objektu, vrátane companion object, init bloku, premenných v konštruktore a bežných premenných?
sobes.tech AI
Odpoveď od AI
Pri vytváraní objektu v Kotlin je poradové poradie inicializácie nasledovné:
- Inicializácia companion object — prebieha raz pri načítaní triedy, pred vytvorením inštancií.
- Inicializácia vlastností deklarovaných v tele triedy (vrátane tých deklarovaných mimo konštruktora) — sú inicializované v poradí, v akom sú deklarované.
- Vykonanie init blokov — sú vykonané v poradí, v akom sú deklarované v triede, ihneď po inicializácii vlastností.
- Inicializácia vlastností deklarovaných v konštruktore (napríklad parametre s val/var) — sú inicializované pri volaní konštruktora.
Príklad:
class Example(val constructorProp: String) {
val property1 = println("property1 inicializovaná")
init {
println("init blok 1")
}
val property2 = println("property2 inicializovaná")
init {
println("init blok 2")
}
companion object {
init {
println("companion object inicializovaný")
}
}
}
fun main() {
val example = Example("konštruktor")
}
Výstup bude približne:
companion object inicializovaný
property1 inicializovaná
init blok 1
property2 inicializovaná
init blok 2
Takto je companion object inicializovaný raz pri načítaní triedy, potom pri vytváraní objektu sú inicializované vlastnosti a vykonané init bloky v poradí deklarácie, a parametre konštruktora sú inicializované pri volaní konštruktora.