Seal class kullanımı ile enum kullanımı arasındaki fark nedir, özellikle yapıcılar ve oluşturma imkanları açısından?
sobes.tech yapay zeka
AI'dan gelen yanıt
Kotlin (ve Java) içindeki Enum, sabit sabitler kümesini temsil eder. Her enum’un, kendisinde tanımlanan sınırlı sayıda örneği vardır. Enum yapıcıları her zaman özeldir ve yeni örnekler oluşturulamaz — sadece tanımlananlar.
Sealed class (Mühürlü sınıf), aynı dosyada tanımlanan sınırlı sayıda mirasçıya sahip soyut bir sınıftır. Enum’dan farklı olarak, sealed class farklı yapılar ve durumlar ile çeşitli türler oluşturmasına izin verir. Sealed class yapıcıları açık veya kapalı olabilir ve sadece sabitler değil, mirasçıların yeni örnekleri de oluşturulabilir.
Örnek:
// Özel yapıcı ve sabit örnekleri olan Enum
enum class Direction(val degrees: Int) {
NORTH(0), EAST(90), SOUTH(180), WEST(270)
}
// Farklı mirasçılar ve yapıcılar ile 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")
Bu şekilde, enum, özel yapıcıya sahip sabit örneklerle sınırlıdır, sealed class ise daha esnektir ve kendi yapıcıları ve durumu olan farklı alt sınıflar oluşturmasına olanak tanır.