リフレクションを使ってフィールドの値を出力するロジックを書いてみた
テストモジュール
実行結果
実行結果を見るとフィールドの一覧が動的に取得できていることがわかる
import java.lang.reflect.Field; public class ClassFieldsGetter { public static String fieldsValueWriter(Object obj){ StringBuffer sb = new StringBuffer(); Field[] fields = obj.getClass() .getDeclaredFields(); for(int i=0; i < fields.length;i++){ Field field = fields[i]; field.setAccessible(true); String name = field.getName(); Object value = null; try { value = field.get(obj); } catch (IllegalAccessException e) { value = "*"; } sb.append( name + "=" + value + "n"); } return sb.toString(); }
テストモジュール
import java.util.Date; import org.junit.Test; import static org.junit.Assert.*; public class ClassFieldsGetterTest { @Test public void fieldsValueWriter() { System.out.println("fieldsValueWriter"); TestBean obj = new TestBean(); obj.setTest1("テスト"); obj.setTest2(new Date()); String result = ClassFieldsGetter.fieldsValueWriter(obj); System.out.println(result); } private static class TestBean { private String test1; private Date test2; public String getTest1() { return test1; } public void setTest1(String test1) { this.test1 = test1; } public Date getTest2() { return test2; } public void setTest2(Date test2) { this.test2 = test2; } } }
実行結果
test1=テスト test2=Sat Jun 28 23:09:03 GMT+09:00 2008