Middle
Za šta se koriste data klase i sealed klase u Kotlinu?
sobes.tech АИ
Одговор од АИ
Klase podataka pojednostavljuju kreiranje klasa namenjenih isključivo za skladištenje podataka. Prevodilac automatski generiše za njih:
equals()hashCode()toString()copy()componentN()za destrukturiranje
podatkasta klasa User(val ime: String, val starost: Int)
// Upotreba
val user = User("Alice", 30)
println(user) // Prikazuje User(ime=Alice, starost=30)
val user2 = user.copy(starost = 31)
val (ime, starost) = user // Destrukturiranje
Zapečaćene klase (sealed) predstavljaju ograničenu hijerarhiju klasa, gde su sve moguće podklase poznate tokom kompilacije. To omogućava njihovu upotrebu u izrazima when bez else bloka, garantujući potpunu proveru svih opcija.
zapečaćena klasa Result {
data class Success(val podaci: String) : Result()
data class Error(val poruka: String) : Result()
objekat Loading : Result() // Objekat, jer nema parametara
}
fun handleResult(result: Result) {
when (result) {
is Result.Success -> println("Uspeh: ${result.podaci}")
is Result.Error -> println("Greška: ${result.poruka}")
Result.Loading -> println("Učitava se...")
}
}
Uporedjenje:
| Osobina | Klasa podataka | Zapečaćena klasa |
|---|---|---|
| Svrha | Čuvanje podataka | Ograničena hijerarhija klasa |
| Mogućnosti | Automatsko generisanje metoda | Potpuna kontrola u when |
| Podklase | Bez specifičnih ograničenja | Moraju biti u istom fajlu ili modulu |
| Upotreba | Modeli podataka, DTO | Predstavljanje stanja, događaja, varijanti |