Middle
What is the difference between sealed classes and enum in Kotlin?
sobes.tech AI
Answer from AI
Sealed classes are used to represent a restricted class hierarchy, where all subclasses are known at compile time. Enum classes are used to represent a fixed set of constants.
Main differences:
- Inheritance: Sealed classes can have subclasses, whereas enum classes cannot be inherited.
- Instances: Sealed classes can have multiple instances of subclasses, while enum classes have only one instance per constant.
- State: Instances of sealed classes can contain state (properties, methods), whereas enum constants usually represent simple values.
whenexpressions:whenexpressions with sealed classes are exhaustive (the compiler requires handling all possible subclasses), whereas with enum classes this is not always the case unlesselseis used.
Example of a Sealed class:
sealed class Result {
data class Success(val data: String) : Result()
data class Error(val message: String) : Result()
object Loading : Result() // Singleton instance
}
Example of an Enum class:
enum class Status {
SUCCESS,
ERROR,
LOADING
}