コピーもとの型が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); } } 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クラスを自分で作成して、登録する事ができます。
この記事は
現在のアクセス:8580