Что выведет код Junior Классы, data и sealed обновлено
data class: equals, copy и деструктуризация
Вопрос
Что выведет код? По строке на каждый вывод.
data class User(val name: String, val age: Int)
fun main() {
val u = User("Ann", 30)
val older = u.copy(age = 31)
println(u)
println(u == User("Ann", 30))
println(u === User("Ann", 30))
val (name, age) = older
println("$name $age")
println(setOf(u, User("Ann", 30), older).size)
}
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: User(name=Ann, age=30), true, false, Ann 31, 2. toString у data class печатает имя класса и поля. == сравнивает содержимое, === ссылки, а это разные объекты. copy(age = 31) создаёт новый объект с изменённым полем, деструктуризация берёт component1() и component2().
Что выведет
User(name=Ann, age=30)
true
false
Ann 31
2
Разбор
toString у data class печатает имя класса и поля. == сравнивает содержимое, === ссылки, а это разные объекты. copy(age = 31) создаёт новый объект с изменённым полем, деструктуризация берёт component1() и component2(). В множестве два одинаковых по equals пользователя схлопываются, остаётся 2 элемента.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.