Sobes.tech
Junior — Middle

Az érték típusú val értéke változatlan marad a deklarálás után?

sobes.tech MI

Válasz az MI-től

Kotlinban a val kulcsszó egy változhatatlan hivatkozást jelent, vagyis miután egy val-lal deklarált változónak értéket adunk, nem változtathatjuk meg ezt a hivatkozást más objektumra. Ez azonban nem jelenti azt, hogy maga az objektum, amelyre a val hivatkozik, változatlan lenne. Ha az objektum módosítható (például MutableList), belső állapota változtatható, még akkor is, ha a val hivatkozás nem változik.

Példa:

val list = mutableListOf(1, 2, 3)
list.add(4) // Ez megengedett, a lista tartalma változik

// list = mutableListOf(5, 6) // Hiba: nem lehet újra hozzárendelni egy `val`-t

Így a val garantálja a hivatkozás változatlanságát, de nem az objektumét.