Какие плюсы и минусы sealed class

«Какие плюсы и минусы sealed class» — вопрос из категории Kotlin, который задают на 24% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Плюсы:
✅ Ограниченная иерархия – компилятор знает все возможные подклассы
✅ Идеально для представления закрытых состояний (например, Loading, Success, Error)
✅ Полная поддержка when-выражений без else (если все кейсы покрыты)
✅ Безопасность типов – нельзя создать незадекларированный подкласс

Минусы:
❌ Нельзя расширять вне файла/модуля, где объявлен sealed class
❌ Немного шаблонный код для каждого подкласса

Пример:

sealed class Result<out T> {
    data class Success<T>(val data: T) : Result<T>()
    data class Error(val message: String) : Result<Nothing>()
    object Loading : Result<Nothing>()
}

fun handleResult(result: Result<String>) = when(result) {
    is Result.Success -> println(result.data)
    is Result.Error -> println(result.message)
    Result.Loading -> println("Loading...")
}