Reified
- Kotlin kursu
- Orta seviye
- Ders 51/116
- 5 dk
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
// 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
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?
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
inline fun <____ T> typeName(): String {
return T::class.simpleName ?: "Unknown"
}
inline fun <reified T> typeName(): String {
return T::class.simpleName ?: "Unknown"
}
Açıklama: reified T tür parametresini erişilebilir kılar.