从list中取出对象并获得其属性值--反射的初级应用

最近公司的项目需要导出csv文件,一个同事用最原始的方式将每条记录取出然后加“,”解决。

但是客户后面要求在每个页面当中都加入这个功能。于是,问题来了,分开写代码太多,合起来又不能确定在list中存储的对象为哪个对象,不能用get方法获得属性。

我一直认为当初他那样写就将程序写死了。可是,在多次尝试后,还是通过java的反射从list中取出了对象,从对象中取出了属性值:

下面是代码:

package com.hb.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));
			}
		}
	}

}
这样在不知道从list中取出的为何对象的时候,也能够取得对象的属性值,就可以写出一个公共的方法来传入List对象,然后进行csv文件的生成,导出了。
posted @ 2011-04-07 11:03  蘑菇大叔  阅读(13527)  评论(0)    收藏  举报