Junior — Middle
შესაძლებელია თუ არა data class-ში განსაზღვრო ველი, რომელიც hashCode-ის გამოთვლიდან გამორიცხული იქნება?
sobes.tech AI
პასუხი AI-სგან
В Kotlin data class все свойства, объявленные в первичном конструкторе, по умолчанию участвуют в вычислении методов equals(), hashCode() и toString().
Чтобы исключить поле из вычисления hashCode(), можно объявить его вне первичного конструктора, например, как var или val внутри тела класса. Такие свойства не будут учитываться в автоматически сгенерированных методах.
Пример:
data class User(val id: Int, val name: String) {
var tempData: String = "" // не участвует в hashCode и equals
}
Здесь tempData не влияет на hashCode() и equals(), так как не входит в первичный конструктор.
Если нужно более тонкое управление, можно переопределить методы hashCode() и equals() вручную.