關於Java中的反射的一個簡單使用

把之前在其餘地方的技術文章從新整理一遍, 方便本身回憶, 也方便他人借鑑.java

剛工做的時候發過這麼一段代碼:性能

package cn.com.hanbinit.test;
 
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
 
public class Test {
 
    public static void main(String[] args) throws IllegalArgumentException,
            Exception {
        Person p1 = new Person("111", "aaa");
        Person p2 = new Person("222", "bbb");
        List list = new ArrayList();
        list.add(p1);
        list.add(p2);
        test(list);        
    }
 
    public static void test(List list) throws Exception, IllegalAccessException {
        for (int i = 0; i < list.size(); i++) {
            Field[] fields = list.get(i).getClass().getDeclaredFields();
            Object oi = list.get(i);
            for (int j = 0; j < fields.length; j++) {
                if(!fields[j].isAccessible()){
                    fields[j].setAccessible(true);
                }            
                System.out.println(fields[j].get(oi));
            }
        }
    }
}

這段代碼只是運用了Java中的反射中的getDeclaredFields()方法獲取了對象中的全部已經聲明的對象(包括public和private).
另外,isAccessible()方法能夠返回返回反射對象的可訪問標誌的值.也就是說這個屬性可否被其餘對象訪問(也就是看它是否是public屬性的).
setAccessible(boolean flag)能夠爲反射對象設置可訪問標誌,設置爲true至關於將屬性的訪問修飾改成了public.對象

相關文章
相關標籤/搜索