CodeBlanks Logo Icon CodeBlanks

Generic value class

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

Main.kt
// 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

Main.kt
@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

Soru
@JvmInline
value class Box<____>(val value: T)
Cevap
@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

Orta seviye bölümündeki tüm dersler