最近公司的項(xiàng)目需要導(dǎo)出csv文件,一個(gè)同事用最原始的方式將每條記錄取出然后加“,”解決。
但是客戶后面要求在每個(gè)頁面當(dāng)中都加入這個(gè)功能。于是,問題來了,分開寫代碼太多,合起來又不能確定在list中存儲(chǔ)的對(duì)象為哪個(gè)對(duì)象,不能用get方法獲得屬性。
我一直認(rèn)為當(dāng)初他那樣寫就將程序?qū)懰懒???墒牵诙啻螄L試后,還是通過java的反射從list中取出了對(duì)象,從對(duì)象中取出了屬性值:
下面是代碼:
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中取出的為何對(duì)象的時(shí)候,也能夠取得對(duì)象的屬性值,就可以寫出一個(gè)公共的方法來傳入List對(duì)象,然后進(jìn)行csv文件的生成,導(dǎo)出了。