Sobes.tech
Middle

Kotlin'de hiyerarşileri modellemek için mühürlenmiş sınıflar nasıl kullanılır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Seal edilmiş sınıflar (sealed classes), tüm olası alt sınıfların derleme zamanında bilindiği sınırlı kalıtım hiyerarşilerini temsil etmek için kullanılır.

Ana özellikler:

  • Tüm doğrudan alt sınıflar, seal sınıfıyla aynı dosyada olmalıdır (Kotlin 1.5 öncesi). Kotlin 1.5 ve sonrası, bunlar herhangi bir dosyada olabilir.
  • Seal sınıfın alt sınıfları, normal sınıflar, data sınıfları, object bildirimleri veya diğer seal sınıfları olabilir.
  • Seal sınıfın yapıcı varsayılan olarak özeldir; diğer modifikörler (public, protected, internal) izin verilmez.
  • When ifadelerinde kapsamlı (exhaustive) analiz kullanmaya izin verir, bu da tüm olası durumların işlenmesini garanti eder ve else bloğuna gerek kalmaz.

Kullanım örneği, kullanıcı arayüzü durumunu modellemek için:

sealed class UiState {
    object Loading : UiState() // Yükleme durumu
    data class Success(val data: String) : UiState() // Başarılı veri alma
    data class Error(val message: String) : UiState() // Hata
}

When ifadesinde kullanım:

fun handleUiState(state: UiState): String {
    return when (state) {
        UiState.Loading -> "Veriler yükleniyor..."
        is UiState.Success -> "Veriler başarıyla yüklendi: ${state.data}"
        is UiState.Error -> "Hata: ${state.message}"
    }
}

Avantajlar:

  • Tip güvenliği: derleyici, tüm olası alt sınıfların işlendiğini kontrol eder.
  • Okunabilirlik: hangi veri veya durum varyantlarının olabileceğini açıkça gösterir.
  • Kullanışlılık: when ifadeleriyle çalışmayı basitleştirir.