Sobes.tech
Junior — Middle

În ce ordine are loc inițializarea proprietăților și executarea blocurilor de cod la crearea unui obiect, inclusiv companion object, blocul init, variabilele din constructor și variabilele obișnuite?

sobes.tech AI

Răspuns de la AI

Când se creează un obiect în Kotlin, ordinea de inițializare este următoarea:

  1. Inițializarea obiectului companion — are loc o singură dată la încărcarea clasei, înainte de crearea instanțelor.
  2. Inițializarea proprietăților declarate în corpul clasei (inclusiv cele declarate în afara constructorului) — acestea sunt inițializate în ordinea în care sunt declarate.
  3. Executarea blocurilor init — acestea sunt executate în ordinea în care sunt declarate în clasă, imediat după inițializarea proprietăților.
  4. Inițializarea proprietăților declarate în semnătura constructorului (de exemplu, parametri cu val/var) — acestea sunt inițializate împreună cu apelul constructorului.

Exemplu:

class Example(val constructorProp: String) {
    val property1 = println("property1 inițializat")

    init {
        println("bloc init 1")
    }

    val property2 = println("property2 inițializat")

    init {
        println("bloc init 2")
    }

    companion object {
        init {
            println("companion object inițializat")
        }
    }
}

fun main() {
    val example = Example("constructor")
}

Ieșirea va fi aproximativ:

companion object inițializat
property1 inițializat
bloc init 1
property2 inițializat
bloc init 2

Astfel, obiectul companion este inițializat o singură dată la încărcarea clasei, apoi, la crearea unui obiect, se inițializează proprietățile și se execută blocurile init în ordinea declarației, iar parametrii constructorului sunt inițializați la apelul constructorului.