最近、会社のプロジェクトで CSV ファイルをエクスポートする必要がありました。同僚は、各レコードを取り出して「,」を追加する最も原始的な方法を使用して問題を解決しました。
しかし、その後、顧客はこの機能をすべてのページに追加するように要求しました。そこで問題が発生します。個別に記述されたコードが多すぎるため、どのオブジェクトがリストに格納されているかを判断できず、属性を取得するために get メソッドを使用できないということです。
あのようにプログラムを書いたとき、彼は死ぬほどプログラムを書いたのだといつも思っていました。しかし、何度も試みても、オブジェクトは Java リフレクションを通じてリストから取り出され、属性値もオブジェクトから取り出されます。
以下はコードです:
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 メソッドについては、PHP 中国語 Web サイトに注目してください。