Sobes.tech
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