Sealed class жана enum колдонууда алардын куруучулары жана түзүү мүмкүнчүлүктөрү боюнча кандай айырма бар?
sobes.tech AI
AIден жооп
Kotlin (жана Java) ичиндеги enum — бул туруктуу константтардын топтомун билдирет. Ар бир enum белгиленген чектелген үлгүлөрдүн топтомуна ээ, ал өзү декларациясында аныкталган. Enumдун куруучулары дайыма жеке болот жана жаңы үлгүлөрдү түзүүгө болбойт — тек гана белгиленгендер.
Sealed class (жабылган класс) — бул бир эле файлда декларацияланган чектелген мурасчыларга ээ абстракттуу класс. Enumдан айырмаланып, sealed class ар кандай түзүлүштөрү жана абалы менен ар кандай түрлөрдү түзүүгө мүмкүндүк берет. Sealed class куруучулары ачык же жабык болушу мүмкүн жана жаңы мурасчылар үлгүлөрү түзүлүшү мүмкүн, тек гана туруктуу константтар эмес.
Мисал:
// Жеке куруучу жана туруктуу үлгүлөрү бар enum
enum class Direction(val degrees: Int) {
NORTH(0), EAST(90), SOUTH(180), WEST(270)
}
// Ар кандай мурасчылар жана куруучулары менен sealed class
sealed class Result {
data class Success(val data: String) : Result()
data class Error(val error: Throwable) : Result()
}
val res: Result = Result.Success("OK")
Ушул жол менен, enum жеке куруучу менен чектелген туруктуу үлгүлөрдүн топтомуна ээ, sealed class — көбүрөөк ийкемдүү, ар кандай мурасчыларды өзүнүн куруучулары жана абалы менен түзүүгө мүмкүндүк берет.