Введение в data class в Kotlin
Data class - короткая запись типа, который держит набор связанных полей: имя и возраст пользователя, координаты точки, код товара и цена. Такие значения передают между функциями, кладут в списки и карты, сравнивают между собой, не меняя исходный объект.
Обычный class User(val name: String, val age: Int)
уже знаком по разделу про классы и свойства в конструкторе.
Для двух экземпляров с одинаковыми полями оператор ==
без своей реализации equals сравнивает ссылки,
а вывод в консоль не показывает поля, пока не написать
toString вручную. Для записей-контейнеров это
лишняя работа на каждый тип.
Ключевое слово data class сообщает компилятору,
что тип нужен именно для данных. По списку свойств
в заголовке генерируются equals, hashCode,
toString, copy и функции для
деструктуризации - подробнее в следующих уроках.
Объявление выглядит так:
data class User(val name: String, val age: Int)
fun main() {
val user = User("Ann", 25)
println(user.name)
println(user.age)
}
После создания объект ведёт себя как контейнер данных: поля доступны по имени, лишней логики в типе нет. Data class не заменяет иерархии с наследованием и абстрактные классы - он дополняет их там, где важнее содержимое полей, чем поведение отдельного типа.
Сделайте data class Book с полями
title и pages.
Создайте книгу "Notes" на 120 страниц
и выведите на экран оба поля в двух строках.
Сделайте data class Coord с полями
x и y типа Int.
Создайте точку Coord(3, 7)
и выведите объект на экран одной командой
println.