Может ли быть пустой конструктор у data class

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

Ответ

Да, может, но с некоторыми ограничениями.

data class User(val name: String, val age: Int) {
    constructor() : this("", 0) // вторичный конструктор
}

Особенности:

  1. Первичный конструктор data class должен иметь хотя бы один параметр
  2. Можно добавить пустой вторичный конструктор, но он должен делегировать к первичному
  3. Генерируемые методы (equals, hashCode, toString) будут работать только с полями первичного конструктора
  4. При копировании через copy() будут учитываться только параметры первичного конструктора

Пустой конструктор часто используется для совместимости с библиотеками, требующими конструктор по умолчанию (например, Gson, Room).