info@yesilbilisim.net
Reflection; classları, metodları, interfaceleri, fieldları, vb. özellikleri programımız çalışır haldeyken isimlerini bilmesek bile incelememize ve değiştirmemize yarayan bir Java özelliğidir.
Java’ya bu özellik 1997 yılında yayınlanan Java 1.1 sürümü ile gelmiştir (Yani benden yaşlı bir özellik…). Reflection; yaptığı işin öneminden, dinamik olmasından ve program çalışırken işini yapması sebebiyle çok güçlü bir yenilik olduğu düşünülüyordu.
Ayrıca bu özellik piyasaya sürüldüğü zamanlarda C,C++,Fortran ve Pascal gibi geleneksel programlama dillerinde bu özellik yoktu.
Annotation İle Kullanımı
Java’da anotasyonlar programa ek bilgiler sağlar. Java’nın kendi anotasyonlarını kullanabilir veya kendi anotasyonunuzu yazabilirsiniz. Programınızda bulunan anotasyonları işlemesi için Reflection kullanarak kendi anotasyon işleyicinizi oluşturabilirsiniz. Böylece Reflection ile Java classlarınızı teker teker analiz edebilir ve anotasyonunuz bulunan yerlerde kendi metodunuzu çağırabilirsiniz.
IDE’lerde Otomatik Doldurma
IDE kullanarak kod yazarken illaki otomatik doldurmalarla karşılaşmışsınızdır. Bu özelliği kodlayan programcılar Reflection’ı kullanırlar.
Marshalling/Unmarshalling Kütüphanelerinde
JAXB veya Jattison gibi marshalling/unmarshalling kütüphaneleri XML, Json’dan java objesine çevirirken Reflection kullanarak halleder.
Testler de dahil olmak üzere bu durumlara benzer birçok alanda Reflection kullanılır.
Java Reflection Kullanımı?
Java Reflection’ı kullanabilmemiz için gerekli classları java.lang.reflect paketi altında toplamıştır.
Verdiğimiz örnekte Dog classının sırasıyla fieldlarına, metodlarına, constructorlarına, extend edilmiş sınıfa ve implement edilmiş interfacelerine erişebiliyoruz.
İnceleyebildiğimiz bu yapıların özelliklerine yine Reflection kütüphanesini kullanarak metodlar ile erişebiliyoruz.
Ayrıca Reflection’ın invoke() ile metodu çağırabilir, newInstance() ile obje oluşturabilir ve setAccessible() ile field’ın modifikasyonunu değiştirebilirsiniz.
Böylece Reflection ile inspect/modify yapılış şekillerine örnek vermiş olduk.
Kaynakça: