Назад к вопросам
Junior
120
questionbank

Какие методы существуют у data class в Kotlin?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

У data class в Kotlin автоматически генерируются следующие методы:

  • equals(): Сравнивает объекты по значению свойств, объявленных в конструкторе.
  • hashCode(): Генерирует хеш-код на основе свойств, объявленных в конструкторе.
  • toString(): Возвращает строковое представление объекта в формате "ClassName(prop1=value1, prop2=value2)".
  • copy(): Создает новый объект, копируя свойства оригинала, с возможностью изменения некоторых свойств.
  • componentN(): Генерирует функции component1(), component2() и так далее для каждого свойства в порядке их объявления, что позволяет использовать деструктивное объявление.
data class User(val name: String, val age: Int)

fun main() {
    val user1 = User("Alice", 30)
    val user2 = User("Alice", 30)
    val user3 = User("Bob", 25)

    // equals()
    println(user1 == user2) // true
    println(user1 == user3) // false

    // hashCode()
    println(user1.hashCode())
    println(user2.hashCode())

    // toString()
    println(user1.toString()) // User(name=Alice, age=30)

    // copy()
    val user4 = user1.copy(age = 31)
    println(user4) // User(name=Alice, age=31)

    // componentN() and Destructuring Declaration
    val (name, age) = user1
    println("Name: $name, Age: $age") // Name: Alice, Age: 30
}