Можно ли в конструкторе data class указать var-поле

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

Ответ

Да, можно, но это противоречит концепции data class. Data class предназначены для хранения неизменяемых данных (immutable). Лучше использовать val для полей, чтобы обеспечить безопасность потоков и предсказуемость поведения.

Пример с var (не рекомендуется):

data class User(var name: String, var age: Int)

Лучше использовать val и методы copy() для изменения:

data class User(val name: String, val age: Int)  
val user = User("Alex", 25)  
val updatedUser = user.copy(name = "Bob")  

Использование var в data class может привести к неожиданным side-эффектам.