Назад к вопросам
Wildberries
Junior — Middle
80
В методе hashCode применяется поле, объявленное внутри data class?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Kotlin, для data class компилятор автоматически генерирует методы hashCode(), equals(), toString(), а также copy() и компоненты для деструктуризации. Метод hashCode() основывается на всех свойствах, объявленных в первичном конструкторе data class (то есть на тех, что указаны после имени класса).
Если внутри data class объявлено дополнительное поле вне первичного конструктора, оно не участвует в вычислении hashCode() и equals(). Это связано с тем, что эти методы учитывают только свойства, объявленные в конструкторе, чтобы обеспечить корректное сравнение и хеширование объектов по основным данным.
Пример:
data class User(val id: Int, val name: String) {
var age: Int = 0 // не участвует в hashCode и equals
}
fun main() {
val user1 = User(1, "Alice")
val user2 = User(1, "Alice")
user1.age = 25
user2.age = 30
println(user1 == user2) // true, так как age не учитывается
println(user1.hashCode() == user2.hashCode()) // true
}