Junior — Middle
In welke volgorde worden de eigenschappen geïnitialiseerd en worden de codeblokken uitgevoerd bij het maken van een object, inclusief companion object, init-blok, variabelen in de constructor en gewone variabelen?
sobes.tech AI
Antwoord van AI
Bij het maken van een object in Kotlin is de initialisatievolgorde als volgt:
- Initialisatie van het companion object — gebeurt één keer bij het laden van de klasse, vóór het maken van instanties.
- Initialisatie van de eigenschappen gedeclareerd in de klasse (inclusief buiten de constructor gedeclareerde eigenschappen) — worden geïnitialiseerd in de volgorde waarin ze zijn gedeclareerd.
- Uitvoering van init-blokken — worden uitgevoerd in de volgorde waarin ze in de klasse zijn gedeclareerd, direct na de initialisatie van de eigenschappen.
- Initialisatie van de eigenschappen gedeclareerd in de constructor (bijvoorbeeld parameters met val/var) — worden geïnitialiseerd bij het aanroepen van de constructor.
Voorbeeld:
class Example(val constructorProp: String) {
val property1 = println("property1 geïnitialiseerd")
init {
println("init-blok 1")
}
val property2 = println("property2 geïnitialiseerd")
init {
println("init-blok 2")
}
companion object {
init {
println("companion object geïnitialiseerd")
}
}
}
fun main() {
val example = Example("constructor")
}
De uitvoer zal ongeveer zijn:
companion object geïnitialiseerd
property1 geïnitialiseerd
init-blok 1
property2 geïnitialiseerd
init-blok 2
Op deze manier wordt het companion object één keer geïnitialiseerd bij het laden van de klasse, vervolgens worden bij het maken van een object de eigenschappen geïnitialiseerd en de init-blokken uitgevoerd in de volgorde van declaratie, en de constructorparameters worden geïnitialiseerd bij het aanroepen van de constructor.