0Pricing
Android Academy · Урок

Классы данных

Компактные классы для хранения данных.

«Классы данных» — бесплатный урок 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 — локальная установка не требуется.

Все уроки этого курса

  1. Объявление функций
  2. Классы и свойства
  3. Конструкторы и init
  4. Классы данных
← Назад к Android Academy