Middle
Kam paredzētas datu klases un sealed klases Kotlin?
sobes.tech AI
Atbilde no AI
Datu klases atvieglo tikai datu glabāšanai paredzētu klases izveidi. Kompilators automātiski ģenerē tām:
equals()hashCode()toString()copy()componentN()destrukturizācijai
data class User(val name: String, val age: Int)
// Lietošana
val user = User("Alice", 30)
println(user) // Izvada User(name=Alice, age=30)
val user2 = user.copy(age = 31)
val (name, age) = user // Destrukturizācija
Sealed klases ir ierobežota klases hierarhija, kurā visi iespējamie apakšklases ir zināmas kompilācijas laikā. Tas ļauj tās izmantot when izteiksmēs bez else bloka, nodrošinot visu iespējamās variācijas pilnu pārbaudi.
sealed class Result {
data class Success(val data: String) : Result()
data class Error(val message: String) : Result()
object Loading : Result() // Objekts, jo tam nav parametru
}
fun handleResult(result: Result) {
when (result) {
is Result.Success -> println("Veiksme: ${result.data}")
is Result.Error -> println("Kļūda: ${result.message}")
Result.Loading -> println("Ielādē...")
}
}
Salīdzinājums:
| Raksturlielums | Datu klase | Sealed klase |
|---|---|---|
| Mērķis | Datu glabāšana | Ierobežota klases hierarhija |
| Iespējas | Automātiska metožu ģenerēšana | Pilna pārbaude when izteiksmēs |
| Apakšklases | Nav specifiska ierobežojuma | Tās jādefinē tajā pašā failā vai modulī |
| Lietošana | Datu modeļi, DTO | Stāvokļu, notikumu, variāciju attēlojums |