当前位置: 代码迷 >> Java相关 >> 关于Java中的反射的一个简略使用
  详细解决方案

关于Java中的反射的一个简略使用

热度:94   发布时间:2016-04-22 19:47:04.0
关于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.

  相关解决方案