CodeBlanks Logo Icon CodeBlanks

Reflection

dart:mirrors ile reflection öğrenirsin.

Reflection nedir?

Reflection (yansıma), bir programın kendi yapısını çalışma zamanında incelemesidir: sınıf adları, alanlar, metotlar, annotation'lar. Dart'ta dart:mirrors kütüphanesi sağlar.

Örnek kullanımlar: serialization (JSON ↔ nesne), dependency injection, test mock'ları. Ancak dart:mirrors Flutter/AOT'de desteklenmez; bu yüzden çoğu projede kod üretimi (source_gen) tercih edilir.

En basit reflection aracı runtimeType'tır: her nesne kendi tipini bilir. obj.runtimeType ilgili Type nesnesini verir.

runtimeType ile tip bilgisi

Her Dart nesnesi runtimeType özelliğine sahiptir. Bu, nesnenin dinamik tipini verir ve mirrors gerektirmez — her ortamda çalışır.

Örnek: var u = User('Ayşe'); print(u.runtimeType); ekrana User yazar. Bu, en basit reflection biçimidir.

Daha derin inceleme (alan listeleme, dinamik metot çağrısı) için dart:mirrors gerekir; ama runtimeType çoğu debug ve log senaryosuna yeter.

Uygulama runtimeType ile tip yazdır

class User { String name; User(this.name); } sınıfını tanımla. main içinde var u = User('Ayşe'); oluştur ve print(u.runtimeType); ekle.

Başlangıç kodu

main.dart
void main() {
  // User sınıfını tanımla (main dışında)
  // örnek oluştur ve tip adını yazdır
}

Örnek çözüm

main.dart
class User {
  String name;
  User(this.name);
}

void main() {
  var u = User('Ayşe');
  print(u.runtimeType);
}

Beklenen çıktı

User

Soru ve cevaplar

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

1 dart:mirrors nerede desteklenmez?

  • Dart VM (console)
  • Yalnızca web
  • Flutter / AOT derleme Doğru cevap
  • Test ortamı

Açıklama: dart:mirrors Flutter ve AOT derlemede çalışmaz.

2 Tip bilgisini al

Soru
print(u.____);
Cevap
print(u.runtimeType);

Açıklama: runtimeType nesnenin dinamik tipini verir.

3 Reflection araçlarını eşleştir

Kavram Anlamı
dart:mirrors Tam reflection
runtimeType Basit tip bilgisi
source_gen Kod üretimi
annotation Üst veri

İleri seviye bölümündeki tüm dersler