Классы данных
Компактные классы для хранения данных.
«Классы данных» — бесплатный урок Android Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Android Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Android Academy содержит 4 уроков всего.
Что такое класс данных
Класс данных — это класс, предназначенный для хранения данных. Kotlin автоматически создаёт для него полезные методы.
Чтобы объявить такой класс, напишите data перед class.
Объявление класса данных
В первичном конструкторе класса данных должен быть как минимум один параметр, помеченный val или var.
Здесь User хранит имя и возраст.
data class User(val name: String, val age: Int)
fun main() {
val u = User("Ada", 30)
println(u.name)
}Понятный toString
Обычный класс выводит малопонятный адрес. Класс данных автоматически создаёт понятный toString, показывающий каждое свойство.
Это значительно упрощает отладку.
data class User(val name: String, val age: Int)
fun main() {
val u = User("Ada", 30)
println(u)
}Сравнение с equals
Классы данных сравниваются по содержимому, а не по идентичности. Два объекта с одинаковыми значениями свойств считаются равными при сравнении с помощью ==.
Обычный класс счёл бы их разными.
data class Point(val x: Int, val y: Int)
fun main() {
val a = Point(1, 2)
val b = Point(1, 2)
println(a == b)
}Функция copy
Сгенерированная функция copy создаёт новый объект на основе существующего. Вы можете изменить только указанные свойства.
Исходный объект остаётся без изменений.
data class User(val name: String, val age: Int)
fun main() {
val u = User("Ada", 30)
val older = u.copy(age = 31)
println(older)
}Деструктуризация
Классы данных поддерживают деструктуризацию: извлечение свойств в отдельные переменные одной строкой.
Порядок соответствует порядку параметров конструктора.
data class User(val name: String, val age: Int)
fun main() {
val (name, age) = User("Sam", 25)
println(name + " " + age)
}Значения по умолчанию тоже работают
Как и в любом конструкторе, для параметров класса данных можно задать значения по умолчанию.
Благодаря этому вызывающий код может не указывать ненужные поля.
data class User(val name: String, val active: Boolean = true)
fun main() {
val u = User("Lee")
println(u)
}hashCode для коллекций
Классы данных также создают hashCode, поэтому корректно работают как ключи в Set или Map.
Равные объекты имеют одинаковый хеш, поэтому дубликаты обнаруживаются.
data class Point(val x: Int, val y: Int)
fun main() {
val set = setOf(Point(1, 1), Point(1, 1))
println(set.size)
}Когда использовать классы данных
Выбирайте класс данных, когда объект в основном хранит значения, а не сложное поведение.
- Ответы от API
- Состояние интерфейса в Android
- Записи базы данных
Для объектов со сложной логикой лучше подходит обычный класс.
Классы данных экономят работу
Одно ключевое слово data предоставляет toString, equals, hashCode, copy и поддержку деструктуризации.
Вам больше не придётся писать и вручную поддерживать большой объём шаблонного кода.
Класс данных и обычный класс
Обычный класс сравнивается по идентичности и выводит ссылку на область памяти. Класс данных сравнивается по содержимому и выводит свои значения.
Именно ключевое слово data включает все эти автоматически созданные возможности.
class Plain(val x: Int)
data class Smart(val x: Int)
fun main() {
println(Plain(1) == Plain(1))
println(Smart(1) == Smart(1))
}Быстрая проверка
Проверьте, насколько хорошо Вы поняли классы данных.
Итоги
Вы узнали, что класс данных автоматически создаёт toString, equals, hashCode, copy и поддержку деструктуризации.
Такие классы идеально подходят для объектов, хранящих значения, например состояния интерфейса и моделей API. Теперь Вы изучили функции, классы, конструкторы и классы данных в Kotlin.
Часто задаваемые вопросы
Урок «Классы данных» бесплатный?
Да — полный текст урока «Классы данных» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Android Academy, подпишись на CoddyKit PRO. Курс Android Academy содержит 4 уроков всего.
Чему я научусь в уроке «Классы данных»?
Компактные классы для хранения данных. Ты практикуешь Android Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Android Academy?
Предыдущий опыт не требуется. Android Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Классы данных»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Android Academy?
Да. Каждый урок Android Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.