相同属性的Bean相互赋值
public void copyProperty(SourceObj sObj,TargetObj tObj){
try {
List<Method> methods = new ArrayList<Method>();
Class<?> clazz = sObj.getClass();
while(!clazz.getName().equals("java.lang.Object")){
methods.addAll(Arrays.asList(clazz.getDeclaredMethods()));
clazz = clazz.getSuperclass();
}
for(Method method:methods){
String methodName = method.getName();
if(methodName.startsWith("set")){
//setter
Method m = tObj.getClass().getMethod(methodName, method.getParameterTypes());
String getMethod = m.getName().replaceFirst("set", "get");
//getter
Method sGetMethod = sObj.getClass().getMethod(getMethod);
//调用来源对象的get方法得到返回值
Object obj = sGetMethod.invoke(sObj);
//调用set方法赋值
m.invoke(tObj,obj);
}
}
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}