Bugünkü yazacağımız yazı Java Reflection hakkında olacak. Reflection nedir ne işe yarar peki ? Run time'de çalışırken herhangi bir sınıfın metodlarına , objelerine , değişkenlerine erişmeye yarar. Bu değişkenler private olsa dahi erişebiliyoruz. Normal bildiğiniz üzere private değişkenler erişmek için get şeklinde tanımlamamız gerekirdi. Bu değeri değiştirmek için de set kullanmamız gerekirdi. Student adına bir sınıfımız olacak ve biz bunun farklı bileşenleri erişmeye çalışacağız. Şimdi bunu aşağıdaki kodumuz üzerinde inceleyelim.
import java.lang.reflect.*;
import java.util.ArrayList;
import java.util.Collections;
public class Solution {
public static void main(String[] args){
Class<Student> student = Student.class;
//burada tanımlanan metodları alıyoruz
Method[] methods = student.getDeclaredMethods();
Constructor[] cons = student.getDeclaredConstructors();
Field[] field = student.getDeclaredFields();
ArrayList<String> methodList = new ArrayList<>();
//burada field alanları değiştirerek metod, kurucu metodları
// ve daha farklı yapıları elde edebilirsiniz
for(int i =0 ; i<field.length ; i++){
methodList.add(field[i].getName());
}
//burada metodları sıralıyoruz
Collections.sort(methodList);
for(String name: methodList){
System.out.print(name+" ");
}
}
}
class Student{
private String name;
private String id;
private String email;
public Student(int No){
}
public String getName() {
return name;
}
public void setId(String id) {
this.id = id;
}
public void setEmail(String email) {
this.email = email;
}
public void anothermethod(){ }
}
Arkadaşlar kodun belirli kısımlarına gerekli yorumları yazmaya özen gösterdik. Şimdi de kodların çıktısını verelim.
Metod için : anothermethod getName setEmail setId
field için email id name
Constrıctor için : deneme.Student
Yeni işimde .net kodladığımız için orada da reflection kütüphanesine kısa bir göz attım. Güzel Türkçe dokümanlar olduğunu gördüm. Bununla ilgili bu site yardımcı olacaktır diye düşünüyorum.
Son olarak bu bilgiyle birlikte yazıyı burada sonlandırabiliriz. Umarım güzel bir yazı olmuştur. Hoşça kalın.
güzel
YanıtlaSil