Копирование ссылок на объекты в Kotlin
При присваивании объекта другой переменной копируется не сам экземпляр, а ссылка на него. Обе переменные указывают на один объект в памяти:
class User(var name: String, var age: Int)
fun main() {
val user = User("john", 30)
val alias = user
println(user === alias)
}
Изменение свойства по одной переменной видно и у второй - меняется общий объект:
class User(var name: String, var age: Int)
fun main() {
val user = User("john", 30)
val test = user
test.name = "eric"
println(user.name)
println(test.name)
}
Так же ведут себя объекты внутри массива или списка: элемент хранит ссылку, и изменение полей объекта сохраняется для всех переменных с той же ссылкой:
class User(var age: Int)
fun main() {
val users = mutableListOf(User(20))
val first = users[0]
first.age = 25
println(users[0].age)
}
Создайте объект User и присвойте его переменной copy.
Измените имя в copy. Выведите имя из исходной переменной.
Запишите объект Employee в элемент списка.
Возьмите этот элемент в отдельную переменную,
измените зарплату. Выведите зарплату из списка.