Bu yazımda dikkatli kullanıldığı takdirde işleri çok kolaylaştıran aksi takdirde ise performans problemlerine yol açan Java Reflection API’ ye kısa bir giriş yapacağım. Bu API’ nin amacını kısaca şöyle özetleyebilirim. Çalışma anında sınıfa ait constructor, field, metot gibi bilgilere erişebilmek için kullanılır. Hemen kısa bir örnek ile giriş yapmış olalım.

package com.farukbozan.jfr.reflection;public class ReflectionClass {int field1 = 0;private int field2 = 0;

protected int field3 = 0;

public int field4 = 0;

public ReflectionClass() {
}

public String getInfo() {
return “Reflection Class Info…”;
}

public String getInfo(String byName) {
return getInfo().concat(” by “).concat(byName);
}

public int getField2() {
return field2;
}

public void setField2(int field2) {
this.field2 = field2;
}

}

 

Klasik bir sınıfımızdan sonra reflection özelliklerini kullanacağımız bir de main sınıfı tanımlayalım.

 

package com.farukbozan.jfr.reflection;import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;public class ReflectionMain {public static void main(String[] args) {@SuppressWarnings(“unchecked”)
Class reflectionClazz = (Class) ReflectionClass.class;

@SuppressWarnings(“rawtypes”)
Constructor[] contructors = reflectionClazz.getDeclaredConstructors();
Field[] fields = reflectionClazz.getDeclaredFields();
Method[] methods = reflectionClazz.getDeclaredMethods();

for (@SuppressWarnings(“rawtypes”)
Constructor c : contructors)
System.out.println(c.getName());

for (Field f : fields)
System.out.println(f.getName());

for (Method m : methods)
System.out.println(m.getName());

}

}

Main sınıfında öncelikle ReflectionClass sınıfına ait bilgileri alıyoruz. Daha sonra tanımlanmış constructor, field ve metotları sırası ile print ediyoruz. Çıktımız ise şöyle oluyor.

 

com.farukbozan.jfr.reflection.ReflectionClass
field1
field2
field3
field4
getInfo
getInfo
getField2
setField2

Basit bir örnek ile Reflection API’ ye girmiş olduk. Sonraki yazılarımda daha da detaylı örnekler ile karşınızda olmayı planlıyorum.

 

Bol Java’ lı günler dileğiyle 😀 …

Categories:

No responses yet

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.