- 追加された行はこの色です。
- 削除された行はこの色です。
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents
**ある型だけ特殊な処理をさせる [#o9b2c220]
コピーもとの型がjava.util.Dateだったとして、コピー先の型が単なるStringだって場合などはよくありそうですが、その場合には下記のConverterの機能で対応することができます。たとえば、
public class SrcBean2 {
private Date date;
//Getter/Setterは省略
}
public class DestBean2 {
private String date;
//Getter/Setterは省略
@Override
public String toString() {
return new ToStringBuilder(this).append("date", date).toString();
}
}
こんな場合ですね。
やり方は以下の通り。
public class Main2 {
public static void main(String[] args) throws IllegalAccessException,
InvocationTargetException, NoSuchMethodException {
SrcBean2 src = new SrcBean2();
src.setDate(new Date());
DestBean2 dest = new DestBean2();
ConvertUtilsBean convertUtilsBean = new ConvertUtilsBean();
convertUtilsBean.deregister(String.class);
convertUtilsBean.register(new MyStringConverter(), String.class);
// DestがStringの時に呼ばれる処理。
BeanUtilsBean beanUtilsBean = new BeanUtilsBean(convertUtilsBean,
new PropertyUtilsBean());
beanUtilsBean.copyProperties(dest, src);
System.out.println(dest);
}
}
class MyStringConverter implements Converter {
public Object convert(Class type, Object value) {
if (value instanceof Date) {
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd");
return sdf1.format(value);
}
return value.toString();
}
}
こんな感じで、コピー先がStringだった場合はこうしろっていうConverterクラスを自分で作成して、登録する事ができます。
----
この記事は
#vote(おもしろかった[1],そうでもない[0])
#vote(おもしろかった[2],そうでもない[0])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}