Middle
Kotlinде маалымат класстары жана sealed класстары эмне үчүн колдонулат?
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 {
маалымат классы Success(val маалымат: String) : Result()
маалымат классы 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 | Статустарды, окуяларды, варианттарды көрсөтүү |