Özet - Value class
- Kotlin kursu
- Orta seviye
- Ders 81/116
- 5 dk
value class, method ve type safety'yi birleştirerek bir UserId sınıfı yazarsın.
Özet - Value class
Bu grupta value class'ın beş yönünü öğrendin. @JvmInline value class tek değeri sıfır ek yükle sarmalar. Tür güvenliği UserId ve OrderId gibi ayrı türler sağlar.
Value class metot içerebilir; davranış sarmalanan değere erişir. Genel value class Box<T> her türü sarmalar. Data class ile karşılaştırınca value class tek alan için, data class çok alan için uygundur. Her araç derleme zamanı güvenliği çalışma zamanı verimliliğiyle birleştirir.
Ne zaman value class?
Tek bir değeri tür güvenli sarmak istediğinde value class kullan: ID, e-posta, ölçü birimi, etiket. Birden fazla alan veya copy/equals gerekiyorsa data class seç.
Value class derleme zamanında ayrı tür, çalışma zamanında temel türdür. Bu, ek bellek olmadan karışıklığı önler. Metot ve genel tür parametresi de desteklenir; böylece sarmalayıcı yalnızca değeri tutmaz, davranış da taşır. Doğru aracı seçmek hem güvenliği hem performansı korur.
Uygulama value class ile metot tanımla
@JvmInline value class UserId(val id: String) tanımla; içinde fun display() = println("User: $id") olsun. main içinde UserId("U1").display() çağır.
Başlangıç kodu
// UserId değer sınıfını tanımla: display metodu ile
// display metodu: User: $id yazsın
fun main() {
// UserId örneği oluştur ve display çağır
}Örnek çözüm
@JvmInline
value class UserId(val id: String) {
fun display() = println("User: $id")
}
fun main() {
UserId("U1").display()
}Beklenen çıktı
User: U1
Uygulama genel Box<T> kullan
@JvmInline value class Box<T>(val value: T) tanımla. main içinde println(Box(10).value) ve println(Box("Merhaba").value) çağır.
Başlangıç kodu
// Box değer sınıfını tanımla: genel value class ile
fun main() {
// Box<Int> ve Box<String> oluştur ve yazdır
}Örnek çözüm
@JvmInline
value class Box<T>(val value: T)
fun main() {
println(Box(10).value)
println(Box("Merhaba").value)
}Beklenen çıktı
10 Merhaba
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 value class'ın temel yararı nedir?
- Daha çok alan
- Otomatik copy
- Miras
- Tür güvenliği, sıfır yük Doğru cevap
Açıklama: value class tür güvenliğini sıfır ek yükle sağlar.
2 value class kavramlarını eşle
| Kavram | Anlamı |
|---|---|
@JvmInline value class |
Sarmalayıcı |
tek val alan |
Zorunlu |
fun display() |
Metot |
Box<T> |
Genel |