Sobes.tech
Junior

Барои чӣ сохтмонҳо дар синфи маълумот истифода мешаванд ва оё мумкин аст бе онҳо гузариш кард?

sobes.tech AI

Ҷавоб аз AI

Дар data class конструктор истифода мешавад барои оғоз кардани хосиятҳои он ҳангоми эҷоди объект. Он автоматӣ аз ҷониби компилятор бар асоси хосиятҳое, ки дар конструктори асосӣ дар зери номи синф дар зикр шудаанд, таҳия мешавад.

Мумкин ва тавсия дода мешавад, ки тавҷеҳ муайян кардани конструкторро парҳез кунед, зеро компилятор худкор созиш медиҳад:

  • Конструктор асосӣ (val/var хусусият1: Навъи1, val/var хусусият2: Навъи2, ...)
  • Методҳои equals(), hashCode(), toString()
  • Метод copy()
  • Методҳои componentN() барои деструктуризатсия

Масалан:

// Класи маълумот бо конструктори худкор таҳияшуда
data class User(val name: String, val age: Int)

// Эҷоди объект
val user = User("Alice", 30)

Нагузоред, ки конструкторро дастӣ нависед, магар он ки лозим ояд, ки конструктори дуюмдараҷа бо мантиқи дигар ё хосиятҳои пешфарз, ки дар data class кам истифода мешавад, дошта бошед, зеро мақсади асосии он танҳо нигоҳ доштани маълумот аст. Ҳатто хосиятҳои пешфарзро дар конструктори асосӣ нишон додан мумкин аст:

// Класи маълумот бо хосияти пешфарз
data class Product(val id: Int, val name: String, val price: Double = 0.0)

Бинобар ин, дар data class конструктор ҳамеша вуҷуд дорад, аммо таърифаш дар аксари ҳолатҳо аз ҷониби компилятор гирифта мешавад.