Junior — Middle
В кои случаи е по-добре да използвате sealed class вместо enum в Kotlin?
sobes.tech AI
Отговор от AI
В Kotlin се препоръчва sealed клас преди enum, когато трябва да опишете ограничен набор от типове с различни структури от данни и поведение, а не просто набор от константи.
Разлики и кога да използвате sealed клас:
- Различни данни при вариантите: В enum всички елементи са константи от един и същи тип, докато sealed клас позволява на всеки подклас да има свои свойства и методи.
- Наследяване и разширяемост: Sealed клас е базов клас с ограничен брой наследници, полезен за изразяване на йерархии.
- Използване в when: Компилаторът проверява пълнотата на when за sealed клас, което увеличава безопасността.
Пример за sealed клас:
sealed class Резултат {
data class Успех(val данни: String) : Резултат()
data class Грешка(val грешка: Throwable) : Резултат()
object Зареждане : Резултат()
}
fun обработиРезултат(резултат: Резултат) {
when(резултат) {
is Резултат.Успех -> println("Данни: ${резултат.дани}")
is Резултат.Грешка -> println("Грешка: ${резултат.грешка.message}")
Резултат.Зареждане -> println("Зареждане...")
}
}
Ако имате нужда само от списък с фиксирани константи без данни, enum ще бъде по-прост и ефективен.