Junior — Middle
В кои случаи и къде може да се обявят подкласове, ако класът е маркиран като sealed?
sobes.tech AI
Отговор от 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 класа. Това ограничение помага за осигуряване на типова безопасност и пълнота на проверките.