Ответ
Sealed class в Kotlin компилируется в abstract class в JVM байткоде с некоторыми дополнительными метаданными.
Ключевые особенности:
- Класс помечается модификатором
abstract - Добавляется аннотация
@Metadataс информацией о sealed-иерархии - Все подклассы должны находиться в том же пакете (это проверяется во время компиляции)
Пример:
// Kotlin
sealed class Result
class Success : Result()
class Error : Result()
Будет скомпилировано примерно так:
// Декомпилированный Java-код
public abstract class Result {
private Result() {}
}
public final class Success extends Result {
public Success() {}
}
public final class Error extends Result {
public Error() {}
}