Data-класс

Data-класс


В главное меню


В Data классе переопределяется:

  • toString
  • equals
  • hashCode
  • Переопределены деструктивные операторы (component1(), component2()...)
  • Переопределен метод copy()

Можно использовать деструктор.

Если не укажем, что это дата класс, то деструктор не получится вызвать, т.к. необходимо чтобы в классе были переопределены методы "component 1" 2 и т.д. Их может быть сколько угодно. И в принципе можем переопределить сами.

class Student(val name: String, val lastName: String, val id: String) {
    operator fun component1() = name
    operator fun component2() = lastName
    operator fun component3() = id
}

operator означает, что это не наша функция, а функция, которая нужна для деструктора.

Деструктор

Есть класс с параметрами. Вызываем объект.

val student1 = Student("Kolya", "Tarasov", "1034")

Можем вызвать деструктор

val (name, lastName, id) = student1
println(name)

Если переменная не нужна - подчеркивание

val (name, _, id) = student1
println(name)


Copy

Если это дата класс, то у объекта такие же параметры как и у копируемого объекта, но при этом они ссылаются на разные объекты.

val student3 = student1.copy()

Можем поменять какое-то одно значение:

val student3 = student1.copy(id = "999")


Report Page