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
}