Sobes.tech
Middle

Барои чӣ дар Kotlin синфҳои маълумот ва синфҳои seal истифода мешаванд?

sobes.tech AI

Ҷавоб аз AI

Классҳои маълумот ба соддагардонии эҷоди классҳое кӯмак мекунанд, ки танҳо барои нигоҳ доштани маълумот пешбинӣ шудаанд. Компилятор барои онҳо автоматӣ истеҳсол мекунад:

  • equals()
  • hashCode()
  • toString()
  • copy()
  • componentN() барои вайрон кардан
синфи маълумот User(val номи: String, val синну сол: Int)

// Истифода
val user = User("Alice", 30)
println(user) // Натиҷа User(ном=Alice, синну сол=30)
val user2 = user.copy(синну сол = 31)
val (ном, синну сол) = user // Вайрон кардан

Классҳои бастабандӣ (sealed) як хирархияи маҳдудшудаи классҳоро намояндагӣ мекунанд, ки дар он ҳама подклассҳои имконпазир дар вақти компилятсия маълуманд. Ин имкон медиҳад, ки онҳоро дар изразҳои when бе блоки else истифода бурда, санҷиши пурраро таъмин кунанд.

синфи бастабандӣ Result {
    data class Success(val маълумот: String) : Result()
    data class Error(val паём: String) : Result()
    объект Loading : Result() // Объект, зеро параметр надорад
}

fun handleResult(result: Result) {
    when (result) {
        is Result.Success -> println("Бомуваффақият: ${result.маълумот}")
        is Result.Error -> println("Хатогӣ: ${result.паём}")
        Result.Loading -> println("Боркунии маълумот...")
    }
}

Мувофиқат:

Хусусият Датои класс Баста класс
Ҳадаф нигоҳдории маълумот хирархияи маҳдудшудаи классҳо
Имкониятҳо истеҳсоли автоматии методҳо санҷиши пурра дар when
Подклассҳо бидуни маҳдудиятҳои махсус бояд дар ҳамон файл ё модул бошанд
Истифода моделҳои маълумот, DTO намоиши ҳолатҳо, ҳодисаҳо, вариантҳо