Junior — Middle
Paaiškinkite, kas yra uždarytos klasės Kotlin ir kaip jos naudojamos
sobes.tech AI
Atsakymas iš AI
Kotlin'e nėra specialios sąvokos "uždarytos klasės" (closed classes) kaip atskiro tipo, tačiau yra panaši koncepcija — sealed klasės (sekluotos klasės).
Sealed klasė riboja paveldėjimo hierarchiją: visos tokios klasės pogrupiai turi būti deklaruoti tame pačiame faile. Tai leidžia kompiliatoriui žinoti visas galimas pogrupius ir naudoti juos, pavyzdžiui, when išraiškose, be būtinybės rašyti else šaką.
Sealed klasės patogios modeliuojant ribotą galimų variantų rinkinį, pavyzdžiui, būsenas ar įvykius.
Pavyzdys:
sealed class Result {
data class Success(val data: String) : Result()
data class Error(val error: Throwable) : Result()
}
fun handleResult(result: Result) {
when(result) {
is Result.Success -> println("Duomenys: ${result.data}")
is Result.Error -> println("Klaida: ${result.error.message}")
}
}
Jei "uždarytos klasės" reiškia klases su modifikatoriumi private arba internal, tai yra klases su ribotu matomumo lauku: private — matomos tik faile, internal — modulyje.