コピーもとの型が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) { // Dateをなんか人間が見やすいモノに変えて返せばいい return "Hello. " + value; } }
この記事は
現在のアクセス:8588