Generuje `equals/hashCode`, `toString`, `copy` i `componentN` na podstawie primary constructora. Pasuje do DTO/obiektów „wartościowych”, gdzie równość wynika z danych.
Odpowiedź zaawansowana
Głębiej
`data class` to wygodny sposób deklaracji typów „wartościowych”. Kotlin generuje:
`equals()` / `hashCode()` na podstawie właściwości z konstruktora
`toString()`
`copy(...)`
`componentN()` do destrukturyzacji
Kiedy pasuje
DTO, modele request/response, konfiguracje.
Value objecty, gdzie równość wynika z danych.
Uwagi praktyczne
`copy()` jest płytkie (kopiuje referencje).
Preferuj `val` dla niemutowalności; `data class` samo tego nie wymusza.
Typowe pułapki
Mutowalne pola w obiektach używanych jako klucze HashMap/HashSet.
Oczekiwanie dziedziczenia (data class domyślnie jest final).