Sobes.tech
Junior — Middle

É possível sobrescrever o método hashCode numa data class?

sobes.tech IA

Resposta da IA

Sim, na classe de dados Kotlin é possível sobrescrever o método hashCode(). Por padrão, o compilador gera uma implementação de hashCode() (e equals()) com base em todas as propriedades declaradas no construtor da classe.

Se for necessário alterar a lógica de cálculo do hash, pode-se sobrescrever explicitamente o método:

data class User(val id: Int, val name: String) {
    override fun hashCode(): Int {
        // Por exemplo, usar apenas o id para o hash
        return id.hashCode()
    }
}

No entanto, deve-se ter cuidado: a sobrescrição de hashCode() deve estar de acordo com equals() para evitar violações dos contratos desses métodos.