Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Kotlin: sealed, class, exhaustive, when

Что такое sealed-классы и для чего они применяются?

Проверяет понимание конструкции sealed для ограничения иерархии типов.

Короткий ответ

sealed-класс в Kotlin — это класс, у которого все подклассы объявлены в том же файле, что позволяет компилятору знать полный набор реализаций. Это удобно для описания конечных состояний или событий, когда нужно обработать каждый вариант через when без else.

Длинный ответ

sealed-классы ограничивают расширяемость и дают преимущества при проверке:

1. Полный набор подклассов

  • Все реализации объявляются в одном файле

  • Компилятор проверяет exhaustiveness в when

2. Использование в моделировании состояний

sealed class Result {
    	data class Success(val data: String): Result()
    	data class Error(val exception: Throwable): Result()
    	object Loading: Result()
}

3. Безопасность when

fun handle(r: Result) = when(r) {
 	is Result.Success -> show(r.data)
  	is Result.Error   -> showError(r.exception)
  	Result.Loading    -> showLoading()
}

4. Применение:

  • State Machine

  • Упрощённая сериализация/десериализация

Когда использовать:

  • Описывать конечный набор возможных случаев

  • Гарантировать, что все варианты обработаны

  • Аватар

    Android Guru

    Anton Gulyaev

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Kotlin

    Kotlin

Ключевые слова

#sealed

#class

#exhaustive

#when

Подпишись на Android Developer в телеграм

  • Аватар

    Android Guru

    Anton Gulyaev

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.