Ответ: Чаще всего(!) нужны для уменьшения бойлерплейт кода при создании классов, которые будут использоваться для хранения данных. Внимание: именно «чаще всего», а не «только для» =)
Автоматическая генерация методов equals()
, hashCode()
, toString()
и copy()
избавляет от необходимости вручную писать бойлерплейт код, что позволяет сосредоточиться на логике приложения.
Также, их используют когда нужно сделать копирование объекта. Используя переопределенный copy()
.
Плюс их использование полезно в тех случаях, когда нам нужны коллекции, которые требуют сравнения, например, HashMap или Set.
Data class-ы надо использовать только тогда когда это необходимо!