В чем разница между class и data class

«В чем разница между class и data class» — вопрос из категории Kotlin, который задают на 39% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Основное отличие data class от обычного class в Kotlin - автоматическая генерация полезных методов для работы с данными:

  1. Автоматические методы: data class генерирует equals(), hashCode(), toString(), copy() и componentN() функции
  2. Деструктуризация: data class поддерживает деструктуризацию на свойства
  3. Основное назначение: data class предназначен для хранения данных, обычный class - для логики

Пример:

data class User(val name: String, val age: Int)
// Автоматически получаем:
// toString(): User(name=John, age=30)
// copy(), equals(), hashCode()

class Service {
    fun process() { /* логика */ }
}

Ограничения data class:

  • Должен иметь хотя бы один параметр в конструкторе
  • Параметры должны быть val или var
  • Не может быть open, abstract, sealed или inner