Data class (класс данных) — это специальный тип класса в Kotlin, предназначенный исключительно для хранения данных. Главная его особенность — автоматическая генерация стандартных методов на основе свойств, объявленных в первичном конструкторе.
data class User(
val id: Int,
val name: String,
val email: String
)
Компилятор Kotlin автоматически создает для data class:
toString() - читаемое строковое представление
val user = User(1, "Alice", "alice@example.com")
println(user) // Вывод: User(id=1, name=Alice, email=alice@example.com)
equals() и hashCode() - для сравнения объектов
val user1 = User(1, "Alice", "alice@example.com")
val user2 = User(1, "Alice", "alice@example.com")
println(user1 == user2) // true
copy() - создание копии с возможностью изменения отдельных свойств
val updatedUser = user.copy(name = "Alice Smith")
componentN() функции - для деструктуризации
val (id, name, email) = user
println("ID: $id, Name: $name") // ID: 1, Name: Alice
data class ApiResponse<T>(
val success: Boolean,
val data: T?,
val error: String?
)
data class ProductDetailsArgs(
val productId: String,
val fromSearch: Boolean = false
)
data class UserProfileState(
val isLoading: Boolean,
val userData: User?,
val errorMessage: String?
)
data class Coordinates(val x: Int, val y: Int)
val (x, y) = Coordinates(10, 20)
println("x=$x, y=$y") // x=10, y=20
Data class может наследоваться от других классов:
open class Entity
data class User(val id: String, val name: String) : Entity()
data class Person(val name: String) {
override fun toString(): String {
return "Person[name=$name]"
}
}
Data class — идеальное решение для:
Основные преимущества:
Рекомендации:
Data classes существенно упрощают работу с моделями данных в Kotlin, делая код более кратким и выразительным.