Можно ли в data class определить поле, исключённое из вычисления hashCode?

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

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

В 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() вручную.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку