chanting an air of joyous bliss

普段の生活で見逃しがちな面白いことを書いていく
そんなブログです

リフレクションによるフィールド出力

2008-06-28 23:11:10 | Java
リフレクションを使ってフィールドの値を出力するロジックを書いてみた
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 
実行結果を見るとフィールドの一覧が動的に取得できていることがわかる
コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« ニュータイプ タカハラさん ... | トップ | ireportのダウンロード »
最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

Java」カテゴリの最新記事