Sobes.tech
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.
  • when expressions: when expressions with sealed classes are exhaustive (the compiler requires handling all possible subclasses), whereas with enum classes this is not always the case unless else is 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
}
What is the difference between sealed classes and… - sobes.tech