Generic value class
- Kotlin kursu
- Orta seviye
- Ders 79/116
- 5 dk
generic value class kullanımını öğrenirsin.
Genel value class
Bir value class genel (generic) olabilir. Örnek: @JvmInline value class Box<T>(val value: T). Bu, her tür için ayrı sınıf yazmadan tür güvenli sarmalayıcı sağlar. Box<Int> ve Box<String> farklı türlerdir.
Kullanım: val a = Box(10) ve val b = Box("Merhaba"). Tür çıkarımı T'yi otomatik belirler. Genel value class da çalışma zamanında temel türe inline edilir; kutulama yalnızca Any'ye atandığında oluşur. Bu, esnek ama tür güvenli sarmalayıcılar yazmanın yoludur.
Genel value class kullanımı
Genel value class kullanırken tür çıkarımı devreye girer. val a = Box(10) ifadesinde derleyici Box<Int> olduğunu anlar. Açıkça Box<Int>(10) de yazılabilir.
println(a.value) sarmalanan değeri verir: 10. Box<String> ile Box<Int> karıştırılamaz; derleyici reddeder. Genel value class, ID, ölçü birimi ve etiket gibi kavramları tür güvenli sarmak için kullanışlıdır. Çalışma zamanında her biri temel tür olarak saklanır.
Uygulama Box<T> genel value class tanımla
@JvmInline value class Box<T>(val value: T) tanımla. main içinde val a = Box(10) ve val b = Box("Merhaba") oluştur. println(a.value) ve println(b.value) ile yazdır.
Başlangıç kodu
// Box değer sınıfını tanımla: genel value class ile
// value: T tek alan
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() {
val a = Box(10)
val b = Box("Merhaba")
println(a.value)
println(b.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 Box<T>(val value: T) ne sağlar?
- Yalnızca Int
- Herhangi bir tür Doğru cevap
- Yalnızca String
- Yalnızca sınıf
Açıklama: T tür parametresi her türü kabul eder.
2 genel value class tanımını tamamla
@JvmInline
value class Box<____>(val value: T)
@JvmInline
value class Box<T>(val value: T)
Açıklama: T tür parametresi genel sarmalayıcı yapar.
3 genel value class kavramlarını eşle
| Kavram | Anlamı |
|---|---|
<T> |
Tür parametresi |
val value: T |
Genel alan |
Box<Int> |
Int kutusu |
Box<String> |
String kutusu |