Ответ
Плюсы:
- Автоматически генерирует
equals(),hashCode(),toString(),copy() - Упрощает создание immutable моделей данных
- Поддержка деструктуризации (
val (name, age) = user) - Лаконичный синтаксис (
data class User(val name: String, val age: Int))
Минусы:
- Нельзя наследоваться от data class (final по умолчанию)
- Иногда избыточность (
toString()может быть слишком подробным) - Ограниченная кастомизация (например, сложно изменить логику
equals())
Пример:
data class User(val name: String, val age: Int)
// Использование
val user = User("Alex", 25)
val (name, age) = user // деструктуризация