kuniku’s diary

はてなダイアリーから移行(旧 d.hatena.ne.jp/kuniku/)、表示がおかしな箇所はコメントをお願いします。記載されている内容は日付およびバージョンに注意してください。直近1年以上前は古い情報の可能性が高くなります。

リフレクションを容易に実現できるSeasarのクラス


org.seasar.framework.beans.BeanDesc:Bean(JavaBeans)を扱うためのインターフェース
org.seasar.framework.beans.PropertyDescプロパティを扱うためのインターフェース

使い方は、テストクラス(↓の方参照)を参考にするのが手っ取り早い。


使い方の例

import java.lang.reflect.Field;

import org.seasar.extension.unit.S2TestCase;
import org.seasar.framework.beans.BeanDesc;
import org.seasar.framework.beans.impl.BeanDescImpl;
import org.seasar.framework.util.ClassUtil;

import hoge.form.PracticeForm;

public class TestA  extends S2TestCase{
	public void test1(){
		BeanDesc beanDesc = new BeanDescImpl(PracticeForm.class);
		int fieldSize = beanDesc.getFieldSize();
		for (int i= 0 ; i < fieldSize; i++){
			Field field0 = beanDesc.getField(i);
			String name = field0.getName();
			System.out.println("name="+name);
		}

	}

	public void test2(){
		String className ="hoge.form.PracticeForm";
		Object obj = ClassUtil.newInstance(className);
		BeanDesc beanDesc = new BeanDescImpl(obj.getClass());
		int fieldSize = beanDesc.getFieldSize();
		for (int i= 0 ; i < fieldSize; i++){
			Field field0 = beanDesc.getField(i);
			String name = field0.getName();
			System.out.println("name="+name);
		}
	}
}
  • テストクラス

BeanDescImplTest
PropertyDescImplTest
AbstPropertyAssemblerTest
BindingTypeMayDefTest
BindingTypeNoneDefTest
ConstantAnnotationHandlerTest
AbstBeanResultSetHandlerTest
ParameterTest
PropertyDescImplTigerTest
PropertyDescImplTest
TigerAnnotationHandlerTest
BindingTypeShouldDefTest

  • PropertyDescを使用しているクラス(一部抜粋)

TigerAnnotationReader
AbstractBeanResultSetHandler
MetaAnnotationAspectDefBuilder
AbstractPropertyDefBuilder
PropertyDefBuilder

  • BeanDescを使用していいるクラス(一部抜粋)

BeanConverter
PropertyDefBuilder
AbstractCopy
BindingUtil
AnnotationUtil
ConstantAnnotationHandler
BeanReader
EmbeddedValueNode