Junior
როგორ მუშაობენ მონაცემთა კლასები Kotlin-ში?
sobes.tech AI
პასუხი AI-სგან
Kotlin-ში მონაცემთა კლასები მონაცემების შენახვისთვის გამოიყენება. კომპილატორი ავტომატურად ქმნის მათთვის სტანდარტულ მეთოდებს:
equals(): შედარება ხდება მათი თვისებების მნიშვნელობების საფუძველზე.hashCode(): ჰეშ-კოდი გენერირებულია თვისებების მნიშვნელობების საფუძველზე.toString(): აბრუნებს სტრინგის წარმოდგენას, რომელიც შეიცავს ყველა თვისების სახელებს და მნიშვნელობებს.copy(): ქმნის ობიექტის კოპიას, საჭიროების შემთხვევაში ცვლილებების შეტანით.componentN(): მეთოდები ობიექტის დესტრუქცირებისთვის (ობიექტის გაყოფა ცალკეულ თვისებებად).
// მონაცემთა კლასის მაგალითი
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) // ჭეშმარიტი
println(user1 == user3) // მცდარი
// toString()
println(user1.toString()) // User(name=Alice, age=30)
// copy()
val user4 = user1.copy(age = 31)
println(user4) // User(name=Alice, age=31)
// componentN() და დესტრუქცირება
val (name, age) = user1
println("Name: $name, Age: $age") // Name: Alice, Age: 30
}
ძირითადი წერტილები:
- ყველა თვისება, რომელიც განსაზღვრულია ძირითადი კონსტრუქტორში, უნდა იყოს ან
val, ანvar. - მონაცემთა კლასი არ შეიძლება იყოს
abstract,open,sealedანinner. - მონაცემთა კლასები შეიძლება მემკვიდრეობას იძებნოს სხვა კლასებისგან ან განახორციელოს ინტერფეისები.
- კონსტრუქტორთან დაკავშირებული თვისებები არ მონაწილეობს სტანდარტული მეთოდების გენერაციაში.
| მეთოდი | აღწერა |
|---|---|
equals() |
შედარება ძირითადი კონსტრუქტორში განსაზღვრული თვისებების მიხედვით. |
hashCode() |
ჰეშ-კოდის გენერაცია ძირითადი კონსტრუქტორში განსაზღვრული თვისებების საფუძველზე. |
toString() |
სტრინგის სახით წარმოდგენა ძირითადი კონსტრუქტორში განსაზღვრული თვისებების. |
copy() |
ზედაპირული კოპიის შექმნა, ცვლილებების შეტანით. |
componentN() |
წვდომა თვისებებზე მათი გამოყოფის წესით. |
მონაცემთა კლასები მნიშვნელოვნად ამარტივებს POJO (Plain Old Java Object) ან DTO (Data Transfer Object) მუშაობას, ამცირებს ბოილერპლეიტ კოდს.