Сравнение объектов в Kotlin
Оператор === проверяет, указывают ли две переменные
на один и тот же объект в памяти. Разные экземпляры класса
даже с одинаковыми полями при === не равны:
class User(val name: String, val age: Int)
fun main() {
val a = User("john", 21)
val b = User("john", 21)
val c = a
println(a === b)
println(a === c)
}
Оператор == у обычного класса без переопределения
equals ведёт себя как сравнение ссылок - результат
совпадает с ===:
class User(val name: String)
fun main() {
val a = User("john")
val b = User("john")
println(a == b)
println(a === b)
}
Сравнивать «смысл» двух объектов по полям можно вручную - проверить каждое свойство отдельно:
class User(val name: String, val age: Int)
fun main() {
val a = User("john", 21)
val b = User("john", 21)
val sameData = a.name == b.name && a.age == b.age
println(sameData)
}
Создайте два разных объекта User с одинаковым именем.
Выведите результат === для этих переменных.
Создайте объект User и вторую переменную,
которой присвоите тот же объект.
Выведите результат ===.