A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 love_java 于 2013-4-18 21:38 编辑

List list=new ArrayList();
Bean b1 = new Bean();
Bean b2 = new Bean();
list.add(b1);
list.add(b2);

b1和b2中都分别有两个属性 name 和 sex。要通过反射得到获取list中b1和b2的name和sex 怎么获取?

3 个回复

倒序浏览
本帖最后由 罗海清 于 2013-4-13 10:34 编辑

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;


public class Test {

        public static void main(String[] args) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {

                List list=new ArrayList();
                Bean b1 = new Bean();
                Bean b2 = new Bean();
                list.add(b1);
                list.add(b2);
               
               
               
                Class clazz = list.getClass();
              
               
                Method getMethod = clazz.getMethod("iterator");
                Iterator it = (Iterator) getMethod.invoke(list, null);
               
                while(it.hasNext()){
                        Bean bean = (Bean) it.next();
                        
                        Class beanClass = bean.getClass();
                        
                        Field[] fields = beanClass.getDeclaredFields();
                        for(Field field:fields){

                                field.setAccessible(true);
                                System.out.println(field.getName()+":"+field.get(b1));

                        }
                        
                        
                }
               

               
        }
        
        
}结果是:name:nullname:null
sex:null
sex:null



回复 使用道具 举报
CSDN     bt_lose

TestDemo.zip

6.11 KB, 下载次数: 71

回复 使用道具 举报
谢了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马