Sobes.tech
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) // true
    println(user1 == user3) // false

    // 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) աշխատանքի գործընթացը՝ նվազեցնելով բոյլերփլեյթ կոդը։