Sobes.tech
Junior

Kotlin-ში სხვა კლასებთან შედარებით Data Class-ის უნიკალური თვისება რა არის?

sobes.tech AI

პასუხი AI-სგან

Kotlin-ში Data Class-ის მახასიათებლები:

  • ავტომატურად გენერირდება equals(), hashCode(), toString(), copy(), და componentN() ფუნქციები.
  • მოითხოვს მინიმუმ ერთ პარამეტრს კონსტრუქტორში.
  • ყველა კონსტრუქტორის პარამეტრი უნდა იყოს გამოცხადებული როგორც val ან var.
  • განკუთვნილია პირველ რიგში მონაცემების შენახვისთვის.

მაგალითი:

// ჩვეულებრივი კლასი
class User(val name: String, val age: Int)

// Data Class
data class DataUser(val name: String, val age: Int)

fun main() {
    val user1 = User("Alice", 30)
    val user2 = User("Alice", 30)
    println(user1 == user2) // false (შედარება ბმულებზე)
    println(user1.toString()) // რაღაც მსგავსი Output: User@ჰეშ-კოდი

    val dataUser1 = DataUser("Alice", 30)
    val dataUser2 = DataUser("Alice", 30)
    println(dataUser1 == dataUser2) // true (შედარება მონაცემებზე)
    println(dataUser1.toString()) // Output: DataUser(name=Alice, age=30)
}

შედარებები გენერირებულ ფუნქციებზე:

ფუნქცია ჩვეულებრივი კლასი Data Class
equals() ბმულების შედარება მონაცემების შედარება ფარამეტრებით
hashCode() დამოკიდებულია რეალიზაციაზე დამოკიდებულია მონაცემებზე ფარამეტრებით
toString() კლასი და ჰეშ-კოდი კლასი და ფარამეტრების მნიშვნელობები
copy() არა (მხოლოდ ხელით რეალიზება) არსებობს (მარტივად შექმნის ასლებს)
componentN() არა არსებობს (დაშლილობისთვის)

componentN() გამოყენება:

data class Point(val x: Int, val y: Int)

fun main() {
    val p = Point(10, 20)
    val (x, y) = p // დესტრუქციული დაშლა component1(), component2() გამოყენებით
    println("x: $x, y: $y") // Output: x: 10, y: 20
}