Kotlin Data Class - Streamline Your Code with Built-in Methods
Kotlin Data Class является особенным типом классов в языке программирования Kotlin. Она позволяет очень быстро создавать простой класс для хранения данных без необходимости писать много кода, и обладает рядом удобных для работы с данными функций и свойств.
Data Class, как правило, содержит только данные, без методов, или с очень ограниченным набором функций. Она определяется ключевым словом "data" перед словом "class". Можно использовать Data Class для представления данных, таких как структура корзины в интернет магазине:
data class CartItem(val productId: Int, val productName: String, var quantity: Int, var price: Double)
Ключевое слово "data" указывает, что данный класс будет содержать только данные без какой-либо дополнительной логики и Kotlin сам автоматически реализует для этого класса следующие методы:
- equals() – проверяет равенство объектов
- hashCode() – возвращает хеш-код объекта
- toString() – возвращает строковое представление объекта, включающее все его поля и значения
- copy() – создает копию объекта
- componentN() – методы компонентов для деструктуризации объекта
Например, если мы создадим объект типа CartItem, то сможем использовать все предоставленные методы:
val item1 = CartItem(1, "Milk", 2, 1.99)
val item2 = item1.copy(quantity = 3)
println(item1.equals(item2)) // выведет false
println(item1.toString()) // выведет "CartItem(productId=1, productName='Milk', quantity=2, price=1.99)"
println(item1.component1()) // выведет 1
Также, для Data Class в Kotlin есть дополнительные свойства, такие как:
- primary constructor – конструктор класса, который должен принимать как минимум один параметр;
- свойства-члены, объявленные в объявлении класса, которые не должны быть абстрактными, открытыми, защищенными или внутренними;
- нельзя использовать явные модификаторы для свойств или функций внутри Data Class.
Пример использования Data Class в Kotlin:
data class User(val name: String, val age: Int, val isMarried: Boolean)
fun main() {
val user1 = User("John", 30, true)
val user2 = User("Jane", 28, false)
println(user1.toString())
println(user2.hashCode())
println(user1.copy(age = 31))
println(user2.component2())
}
Это не только удобно и более читаемо, но также сокращает количество кода, поскольку Kotlin сам определяет для Data Class необходимые методы, что дает возможность разработчикам быстрее писать и выводить на экран информацию о своих объектах данных.