CodeBlanks Logo Icon CodeBlanks

Reified

reified ile runtime tür bilgisini öğrenirsin.

Reified

reified, generic fonksiyonda tür parametresinin çalışma zamanında erişilebilir olmasını sağlar. Normalde generic tür parametreleri silinir (type erasure); reified bu kısıtı aşar.

Örnek: inline fun <reified T> typeName(): String { return T::class.simpleName ?: "Unknown" }. Bu fonksiyon typeName<Int>() biçiminde çağrılır ve "Int" döndürür. reified ancak inline fonksiyonlarla kullanılabilir; çünkü tür bilgisi çağrı noktasına gömülür. Bu, generic türle çalışma zamanı denetimi yapmayı sağlar.

typeName fonksiyonu

Bir reified generic fonksiyon, tür parametresinin sınıf bilgisine erişir. T::class ile sınıf referansı alınır.

Örnek: inline fun <reified T> typeName(): String { return T::class.simpleName ?: "Unknown" }. typeName<Int>() çağrısı "Int" döndürür. T::class Kotlin reflection'ıdır; .simpleName sınıfın kısa adını verir. ?: "Unknown" null güvenliği sağlar. reified, generic tür denetimleri ve filtreleme işlemleri için kullanışlıdır.

Uygulama typeName reified fonksiyonu

inline fun <reified T> typeName(): String fonksiyonunu tanımla; gövdesi T::class.simpleName ?: "Unknown" döndürsün. main içinde println(typeName<Int>()) çağrısı yapsın.

Başlangıç kodu

Main.kt
// typeName reified generic fonksiyon tanımı
// sınıf adını döndürsün
// main'de Int ile çağır ve yazdır

Örnek çözüm

Main.kt
inline fun <reified T> typeName(): String {
    return T::class.simpleName ?: "Unknown"
}

fun main() {
    println(typeName<Int>())
}

Beklenen çıktı

Int

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 reified parçalarını eşle

Kavram Anlamı
inline fun <reified T> inline ve reified imza
T::class Sınıf referansı
.simpleName Basit ad
typeName<Int>() Çağrı

2 <code>reified</code> neden <code>inline</code> fonksiyonla kullanılır?

Main.kt
reified cannot work without inline; the type information must be inlined.
  • inline daha hızlı olduğu için
  • inline olmadan sözdizimi hatası vermemek için
  • Tür bilgisinin çağrı noktasına gömülmesi için Doğru cevap
  • reified yalnızca inline ile çağrılabilir

Açıklama: inline, tür bilgisini çağrı noktasına gömerek reified'ı mümkün kılar.

3 reified tanımını tamamla

Soru
inline fun <____ T> typeName(): String {
    return T::class.simpleName ?: "Unknown"
}
Cevap
inline fun <reified T> typeName(): String {
    return T::class.simpleName ?: "Unknown"
}

Açıklama: reified T tür parametresini erişilebilir kılar.

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