Sealed class və enum istifadə etməyin fərqi onların qurucuları və yaradılma imkanları ilə əlaqədardır?
sobes.tech Süni İntellekt
AI-dan cavab
Kotlin (və Java) içində enum, sabit konstatların bir toplusunu təmsil edir. Hər bir enum, öz bəyanatında müəyyən edilmiş məhdud sayda nümunəyə malikdir. Enum konstruktorları həmişə özəldir və yeni nümunələr yaradıla bilməz — yalnız elan edilənlər.
Sealed class (mühürlənmiş sinif) isə, eyni faylda elan olunan məhdud sayda törəməklərə malik abstrakt sinifdir. Enum-dan fərqli olaraq, sealed class müxtəlif strukturlara və vəziyyətlərə malik müxtəlif növlər yaratmağa imkan verir. Sealed class konstruktorları açıq və ya bağlı ola bilər və yalnız sabitlər deyil, həm də törəməklərin yeni nümunələri yaradıla bilər.
Nümunə:
// Özəl konstruktor və sabit nümunələrlə enum
enum class Direction(val degrees: Int) {
NORTH(0), EAST(90), SOUTH(180), WEST(270)
}
// Müxtəlif törəmələr və konstruktorlar ilə 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")
Beləliklə, enum, özəl konstruktor ilə məhdudlaşdırılmış sabit nümunələr toplusudur, sealed class isə daha çevikdir və müxtəlif törəmələr yaratmağa imkan verir, öz konstruktorları və vəziyyətləri ilə.