Junior
Хусусияти Data Class дар муқоиса бо дигар синфҳо дар Kotlin чист?
sobes.tech AI
Ҷавоб аз AI
Котлингда 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()) // User@hashcode каби кўрсатади
val dataUser1 = DataUser("Alice", 30)
val dataUser2 = DataUser("Alice", 30)
println(dataUser1 == dataUser2) // true (маълумотларни солиш)
println(dataUser1.toString()) // DataUser(name=Alice, age=30)
}
Яратилган функциялар орасида фарқлар:
| Функция | Оддий класс | Data Class |
|---|---|---|
equals() |
Манзилларни солиш | Поллар бўйича маълумотларни солиш |
hashCode() |
Ижро этишга боғлиқ | Поллар бўйича маълумотларга боғлиқ |
toString() |
Класс номи ва hash коди | Класс номи ва қийматлар |
copy() |
Йўқ (қўл билан амалга ошириш керак) | Ҳамма кўчиришлар учун қулай |
componentN() |
Йўқ | Ҳам (объектни деструктурлаш имкони) |
componentN()дан фойдаланиш:
// Data Class ни таърифлаш
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") // x: 10, y: 20
}