devterview_$ iniciar simulação

O que uma `data class` gera de graça

MédioPlenoRecursos da linguagem

Pergunta

O que o Kotlin gera automaticamente para uma `data class`, e qual o cuidado com `copy` e igualdade?

Resposta esperada

Pra `data class Usuario(val nome: String, val idade: Int)`, o compilador gera `equals`/`hashCode` baseados nas propriedades do construtor primário, `toString` legível, `componentN()` (pra desestruturação) e `copy(...)` pra criar uma cópia alterando alguns campos. Cuidados: (1) só as propriedades do construtor primário entram em `equals`/`hashCode`/`copy` — um `val` declarado no corpo da classe fica de fora, o que pode surpreender. (2) `copy` faz cópia rasa: se um campo é uma lista mutável, a cópia compartilha a mesma lista. (3) Usar `data class` com propriedades mutáveis (`var`) como chave de mapa recria o problema de `hashCode` inconsistente. Idealmente propriedades `val` imutáveis.

Por que perguntam isso

Pergunta pleno. Sinais de experiência: 'só o construtor primário entra' e 'copy é raso'.

#data-class#copy#equals-hashcode
publicidade

Relacionadas