Middle
Kotlin'de data sınıfları ve sealed sınıflar ne için kullanılır?
sobes.tech yapay zeka
AI'dan gelen yanıt
Veri sınıflar, yalnızca veri depolama amaçlı sınıfların oluşturulmasını kolaylaştırır. Derleyici bunlar için otomatik olarak şunları üretir:
equals()hashCode()toString()copy()componentN()destrukturasyon için
veri sınıfı User(val isim: String, val yaş: Int)
// Kullanım
val user = User("Alice", 30)
println(user) // User(isim=Alice, yaş=30) gösterir
val user2 = user.copy(yaş = 31)
val (isim, yaş) = user // Destrukturasyon
Mühürlenmiş sınıflar, tüm olası alt sınıfların derleme zamanında bilindiği sınırlı bir sınıf hiyerarşisini temsil eder. Bu, when ifadelerinde else bloğu olmadan kullanılmalarını sağlar ve tüm olasılıkların kapsamlı bir şekilde kontrol edilmesini garanti eder.
mühürlenmiş sınıf Result {
veri sınıfı Success(val data: String) : Result()
veri sınıfı Error(val message: String) : Result()
nesne Loading : Result() // Parametre olmadığı için nesne
}
fun handleResult(result: Result) {
when (result) {
is Result.Success -> println("Başarı: ${result.data}")
is Result.Error -> println("Hata: ${result.message}")
Result.Loading -> println("Yükleniyor...")
}
}
Karşılaştırma:
| Özellik | Veri sınıfı | Mühürlenmiş sınıf |
|---|---|---|
| Amaç | Veri depolama | Sınırlı sınıf hiyerarşisi |
| Yetenekler | Otomatik metod üretimi | when içinde kapsamlı kontrol |
| Alt sınıflar | Spesifik kısıtlama yok | Aynı dosyada veya modülde olmalı |
| Kullanım | Veri modelleri, DTO'lar | Durumların, olayların, seçeneklerin temsil edilmesi |