0Pricing
Kotlin Academy · Ders

Yansımanın Temelleri

Çalışma zamanında türleri inceleyin

Yansımanın Temelleri, CoddyKit'te ücretsiz bir Kotlin Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Kotlin Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Kotlin Academy kursu toplamda 4 dersten oluşur.

Yansıtma Nedir?

Yansıtma, bir programın çalışma zamanında kendi yapısını inceleyip değiştirebilme yeteneğidir: sınıflar, özellikler, işlevler ve anotasyonlar.

Kotlin yansıtması kotlin.reflect paketinde bulunur ve KClass merkezinde çalışır.

KClass Elde Etme

Bir KClass nesnesi elde etmek için bir tür veya örnek üzerinde ::class söz dizimini kullanın.

class Robot

fun main() {
    val fromType = Robot::class
    val fromInstance = Robot()::class
    println(fromType.simpleName)
    println(fromInstance.simpleName)
}

Sınıf Adları

Bir KClass, simpleName ve qualifiedName değerlerini sunar. Tam nitelikli ad, paket yolunu da içerir.

class Engine

fun main() {
    val k = Engine::class
    println(k.simpleName)
    println(k.qualifiedName)
}

Özellikleri İnceleme

memberProperties, bir sınıfın özelliklerini listeler. Her biri, name değerini sorabileceğiniz bir KProperty nesnesidir.

import kotlin.reflect.full.memberProperties

class Point(val x: Int, val y: Int)

fun main() {
    for (p in Point::class.memberProperties) {
        println(p.name)
    }
}

Özellik Değerlerini Okuma

Bir KProperty1, değerini get(instance) aracılığıyla okumak için bir örnekle çağrılabilir.

import kotlin.reflect.full.memberProperties

class Point(val x: Int, val y: Int)

fun main() {
    val p = Point(3, 4)
    for (prop in Point::class.memberProperties) {
        println(prop.name + " = " + prop.get(p))
    }
}

İşlevleri İnceleme

memberFunctions, bir sınıfın çağrılabilir işlevlerini KFunction nesneleri olarak döndürür. Her işlevin name değerini okuyabilirsiniz.

import kotlin.reflect.full.memberFunctions

class Calculator {
    fun add(a: Int, b: Int) = a + b
    fun negate(a: Int) = -a
}

fun main() {
    Calculator::class.memberFunctions
        .filter { it.name in listOf("add", "negate") }
        .forEach { println(it.name) }
}

İşlev Başvuruları

::name söz dizimi, KFunction türünde çağrılabilir bir başvuru üretir. Bu başvuruyu daha sonra invoke ile çağırabilir veya başka yerlere aktarabilirsiniz.

fun double(n: Int) = n * 2

fun main() {
    val ref = ::double
    println(ref.name)
    println(ref.invoke(21))
}

Örnekler Oluşturma

createInstance(), sınıfın bağımsız değişken almayan bir kurucusu olduğunda yansıtma yoluyla bir nesne oluşturur.

import kotlin.reflect.full.createInstance

class Widget {
    override fun toString() = "Widget"
}

fun main() {
    val w = Widget::class.createInstance()
    println(w)
}

Kurucuları İnceleme

constructors, sınıfın kurucularını listeler. Hangi bağımsız değişkenleri beklediklerini öğrenmek için parameters değerlerini inceleyebilirsiniz.

class Person(val name: String, val age: Int)

fun main() {
    val ctor = Person::class.constructors.first()
    ctor.parameters.forEach { println(it.name) }
}

Maliyetler ve Dikkat Edilecekler

Yansıtma güçlüdür, ancak:

  • Doğrudan çağrılardan daha yavaştır
  • Derleme zamanı güvenliğini aşar
  • JVM'de kotlin-reflect kitaplığını gerektirir

Yansıtmayı sık tekrarlanan döngülerde değil, çatılar ve araç kodları için kullanın.

Yansıtma Araç Kutusu

Hatırlanması gereken temel türler:

  • KClass — bir sınıf
  • KProperty — bir özellik
  • KFunction — bir işlev
  • KParameter — bir parametre

Birlikte, yapıyı dinamik olarak okumanızı sağlarlar.

Kısa Sınama

Yansıtmanın temelleri konusundaki anlayışınızı sınayın.

Özet

Yansıtmanın temellerini öğrendiniz:

  • ::class aracılığıyla KClass elde etme
  • memberProperties ve memberFunctions listeleme
  • Özellik değerlerini okuma ve işlev başvurularını çağırma
  • createInstance() ile nesneler oluşturma

Sırada: anotasyonları dinamik olarak okumak.

Sıkça Sorulan Sorular

“Yansımanın Temelleri” dersi ücretsiz mi?

Evet — “Yansımanın Temelleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Kotlin Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Kotlin Academy kursu toplamda 4 dersten oluşur.

“Yansımanın Temelleri” dersinde ne öğreneceğim?

Çalışma zamanında türleri inceleyin Kotlin Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Kotlin Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Kotlin Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Yansımanın Temelleri” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Kotlin Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Kotlin Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Ek Açıklamaları Kullanma
  2. Ek Açıklamaları Tanımlama
  3. Yansımanın Temelleri
  4. Uygulamalı Yansıma
← Kotlin Academy Sayfasına Dön