8. Создайте класс данных

Класс dataпохож на класс structв некоторых других языках. Он существует главным образом для хранения данных. dataКлассы Kotlin обладают некоторыми дополнительными преимуществами, такими как утилиты для печати и копирования. В этом задании вы создадите простой класс данных и узнаете о поддержке классов данных в Kotlin.

Шаг 1: Создайте класс данных.

  1. Добавьте новый пакет decorв папку example.myapp , чтобы разместить в нем новый код. Щелкните правой кнопкой мыши на файле example.myapp в панели «Проект» и выберите «Файл» > «Создать» > «Пакет» .
  2. В пакете создайте новый класс с именем Decoration.
package example.myapp.decor

class Decoration {
}
  1. Чтобы создать Decorationкласс данных, добавьте перед объявлением класса ключевое слово ` data.`.
  2. Добавьте Stringсвойство, которое будет rocksпередавать классу некоторые данные.
data class Decoration(val rocks: String) {
}
  1. В файле, вне класса, добавьте makeDecorations()функцию для создания и вывода экземпляра класса Decorationс помощью метода "granite"`.`.
fun makeDecorations() {
    val decoration1 = Decoration("granite")
    println(decoration1)
}
  1. Добавьте main()функцию для вызова makeDecorations()и запустите программу. Обратите внимание на логичный вывод, который получается, поскольку это класс данных.
⇒ Decoration(rocks=granite)
  1. В этом случае makeDecorations()создайте еще два Decorationобъекта, которые оба являются «сланцами», и распечатайте их.
fun makeDecorations() {
    val decoration1 = Decoration("granite")
    println(decoration1)

    val decoration2 = Decoration("slate")
    println(decoration2)

    val decoration3 = Decoration("slate")
    println(decoration3)
}
  1. Вставьте makeDecorations()оператор print, который выводит результат сравнения decoration1с decoration2, и второй оператор, сравнивающий decoration3с decoration2. Используйте метод equals(), предоставляемый классами данных.
    println (decoration1.equals(decoration2))
    println (decoration3.equals(decoration2))
  1. Запустите свой код.
⇒ Decoration(rocks=granite)
Decoration(rocks=slate)
Decoration(rocks=slate)
false
true

Шаг 2. Используйте деструктуризацию.

Чтобы получить доступ к свойствам объекта данных и присвоить их переменным, можно присваивать их по одной, например, так.

val rock = decoration.rock
val wood = decoration.wood
val diver = decoration.diver

Вместо этого вы можете создать переменные, по одной для каждого свойства, и присвоить объект данных группе переменных. Kotlin помещает значение свойства в каждую переменную.

val (rock, wood, diver) = decoration

Это называется деструктуризацией и является удобным сокращенным способом записи. Количество переменных должно соответствовать количеству свойств, и переменным присваиваются значения в том порядке, в котором они объявлены в классе. Вот полный пример, который вы можете попробовать в Decoration.kt .

// Here is a data class with 3 properties.
data class Decoration2(val rocks: String, val wood: String, val diver: String){
}

fun makeDecorations() {
    val d5 = Decoration2("crystal", "wood", "diver")
    println(d5)

// Assign all properties to variables.
    val (rock, wood, diver) = d5
    println(rock)
    println(wood)
    println(diver)
}
⇒ Decoration2(rocks=crystal, wood=wood, diver=diver)
crystal
wood
diver

Если вам не нужны одно или несколько свойств, вы можете пропустить их, используя _вместо имени переменной, как показано в приведенном ниже коде.

    val (rock, _, diver) = d5

Last modified: Sunday, 5 April 2026, 2:11 PM