Sobes.tech
Junior — Middle
77

Класс sealed деп белгіленсе, қандай жағдайларда және қай жерде подкласс жариялауға болады?

Сұралған компаниялар
amoCRMamoCRM

AI-дан жауап

sobes.tech AI

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

То есть подклассы sealed класса можно объявлять:

  • В том же файле, где объявлен sealed класс.
  • Внутри самого sealed класса (вложенные классы).

Пример:

sealed class Result {
    class Success(val data: String) : Result()
    class Error(val error: Throwable) : Result()
}

Или

sealed class Result

class Success(val data: String) : Result()
class Error(val error: Throwable) : Result()

Но все эти подклассы должны находиться в одном файле с sealed классом. Это ограничение помогает обеспечивать безопасность типов и полноту проверок.