Ответ
Да, может, но с некоторыми ограничениями.
data class User(val name: String, val age: Int) {
constructor() : this("", 0) // вторичный конструктор
}
Особенности:
- Первичный конструктор data class должен иметь хотя бы один параметр
- Можно добавить пустой вторичный конструктор, но он должен делегировать к первичному
- Генерируемые методы (equals, hashCode, toString) будут работать только с полями первичного конструктора
- При копировании через copy() будут учитываться только параметры первичного конструктора
Пустой конструктор часто используется для совместимости с библиотеками, требующими конструктор по умолчанию (например, Gson, Room).