Middle
Was ist der Unterschied zwischen sealed- und enum-Klassen in Kotlin?
sobes.tech KI
Antwort von AI
Sealed классы используются для представления ограниченной иерархии наследования, где все подклассы известны на этапе компиляции. Enum классы используются для представления фиксированного набора констант.
Основные отличия:
- Наследование: Sealed классы могут иметь подклассы, в то время как enum классы не могут наследоваться.
- Экземпляры: Sealed классы могут иметь несколько экземпляров подклассов, а enum классы — только один экземпляр для каждой константы.
- Состояние: Экземпляры sealed классов могут содержать состояние (свойства, методы), в то время как константы enum обычно представляют собой простые значения.
whenвыражения:whenвыражения с sealed классами являются исчерпывающими (компилятор требует обработки всех возможных подклассов), в то время как с enum классами это не всегда так, если не используетсяelse.
Пример Sealed класса:
sealed class Result {
data class Success(val data: String) : Result()
data class Error(val message: String) : Result()
object Loading : Result() // Одиночный экземпляр
}
Пример Enum класса:
enum class Status {
SUCCESS,
ERROR,
LOADING
}