Middle
Pentru ce sunt utilizate clasele de date și clasele sealed în Kotlin?
sobes.tech AI
Răspuns de la AI
Clasele de date simplifică crearea de clase destinate exclusiv stocării de date. Compilatorul generează automat pentru acestea:
equals()hashCode()toString()copy()componentN()pentru destrukturare
clasă de date User(val nume: String, val vârstă: Int)
// Utilizare
val user = User("Alice", 30)
println(user) // Afișează User(nume=Alice, vârstă=30)
val user2 = user.copy(vârstă = 31)
val (nume, vârstă) = user // Destrukturare
Clasele sigilate reprezintă o ierarhie limitată de clase, unde toate subclasele posibile sunt cunoscute în timpul compilării. Acest lucru permite utilizarea lor în expresii when fără blocul else, garantând o verificare exhaustivă a tuturor opțiunilor.
clasă sigilată Result {
data class Success(val data: String) : Result()
data class Error(val message: String) : Result()
object Loading : Result() // Obiect, deoarece nu are parametri
}
fun handleResult(result: Result) {
when (result) {
is Result.Success -> println("Succes: ${result.data}")
is Result.Error -> println("Eroare: ${result.message}")
Result.Loading -> println("Se încarcă...")
}
}
Comparare:
| Caracteristică | Clasa de date | Clasa sigilată |
|---|---|---|
| Scop | Stocarea datelor | Ierarhie limitată de clase |
| Capabilități | Generare automată de metode | Verificare exhaustivă în when |
| Subclase | Fără restricții specifice | Trebuie să fie în același fișier sau modul |
| Utilizare | Modele de date, DTO-uri | Reprezentarea stărilor, evenimentelor, variantelor |