Используется ли в методе hashCode поле объявленное в теле data class

«Используется ли в методе hashCode поле объявленное в теле data class» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Kotlin data class автоматически генерирует equals(), hashCode(), toString() и другие методы. Для hashCode() используются все свойства, объявленные в первичном конструкторе. Поля, объявленные в теле класса, игнорируются.

data class Person(val name: String) {
    var age: Int = 0 // Не учитывается в hashCode()
}

В примере hashCode() будет зависеть только от name, но не от age. Если нужно включить поле из тела класса, переопределите hashCode() вручную.