Назад к вопросам
Газпром Медиа
Junior — Middle
73
Объясните механизм работы метода equals() в Kotlin Data Class и в чем его отличие от стандартной реализации equals().
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Kotlin, для классов с модификатором data компилятор автоматически генерирует реализацию метода equals(). Этот метод сравнивает объекты по значению их свойств, объявленных в первичном конструкторе, а не по ссылке, как в стандартной реализации equals() из класса Any.
Стандартный метод equals() (например, в Java или Kotlin без data) сравнивает объекты по ссылке — то есть возвращает true только если обе переменные указывают на один и тот же объект в памяти.
Пример:
data class User(val name: String, val age: Int)
val user1 = User("Alice", 30)
val user2 = User("Alice", 30)
println(user1 == user2) // true, так как сравниваются значения свойств
// Если бы User был обычным классом без data:
class UserNormal(val name: String, val age: Int)
val user3 = UserNormal("Alice", 30)
val user4 = UserNormal("Alice", 30)
println(user3 == user4) // false, сравнение по ссылке
Таким образом, equals() в data class обеспечивает удобное и корректное сравнение объектов по содержимому, что особенно полезно для моделей данных.