最近公司的專案需要匯出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文件的生成,導出了。
更多java從list中取出物件並獲得其屬性值的方法相關文章請關注PHP中文網!