Sobes.tech
Middle

Milleks kasutatakse andmeklasse ja sealed klasse Kotlinis?

sobes.tech AI

Vastus AI-lt

Andmeklassid lihtsustavad ainult andmete salvestamiseks mõeldud klasside loomist. Kompilaator genereerib neile automaatselt:

  • equals()
  • hashCode()
  • toString()
  • copy()
  • componentN() destruktureerimiseks
data class User(val name: String, val age: Int)

// Kasutamine
val user = User("Alice", 30)
println(user) // Näitab User(name=Alice, age=30)
val user2 = user.copy(age = 31)
val (name, age) = user // Destruktureerimine

Sealed-klassid on piiratud klasside hierarhia, kus kõik võimalikud alamklassid on teada kompilatsiooni ajal. See võimaldab neid kasutada when-lausekestes ilma else-blokita, tagades kõigi võimalike variantide täieliku kontrolli.

sealed class Result {
    data class Success(val data: String) : Result()
    data class Error(val message: String) : Result()
    object Loading : Result() // Objekt, kuna pole parameetreid
}

fun handleResult(result: Result) {
    when (result) {
        is Result.Success -> println("Edu: ${result.data}")
        is Result.Error -> println("Viga: ${result.message}")
        Result.Loading -> println("Laadimine...")
    }
}

Võrdlus:

Omadus Andmeklass Sealed-klass
Otstarve Andmete salvestamine Piiratud klasside hierarhia
Võimalused Automaatne meetodite genereerimine Täielik kontroll when-lausekestes
Alamklassid Spetsiifiline piirang puudub Peab olema määratletud samas failis või moodulis
Kasutamine Andmemudelid, DTO-d Seisundite, sündmuste, variantide esitlus