24 Nisan 2017 Pazartesi

Reflection / Yansıma Kutüphanesi

     Selamün Aleyküm arkadaşlar,
    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.



1 yorum: