Beanの入れ替え

指定するフィールドだけ、Bean の値を入れ替えたい。
この要求が頻繁に発生したら、、、

public static <T> T replaceBean(T t1,T t2,String...fieldnames) throws Exception{
   if (fieldnames.length==0) return t1;
   Class cls = t1.getClass();
   for(String s : fieldnames){
      Method getter = cls.getDeclaredMethod(
            "get"+s.substring(0,1).toUpperCase()+s.substring(1));
      Method setter = cls.getDeclaredMethod(
            "set"+s.substring(0,1).toUpperCase()+s.substring(1)
           ,new Class[]{getter.getReturnType()});
      setter.invoke(t2,getter.invoke(t1));
   }
   return t2;
}