在实际的开发工作中java对象合并还是比较实用的的一个功能,尤其是在牵扯到数据的更新和业务对象之间的转换的时候更是必要。在这里给大家分享一下我常用的合并对象的方法。
/**
* 合并对象
*
* @param sourceBean 数据源对象
* @param targetBean 需要得到的对象
* @return
*/
private static Object mergerData(Object sourceBean, Object targetBean) {
Field[] sourceFields = sourceBean.getClass().getDeclaredFields();
Field[] targetFields = targetBean.getClass().getDeclaredFields();
try {
for (int i = 0; i < sourceFields.length; i++) {
Field sourceField = sourceFields[i];
//这里遍历主要是为了适应双方对象属性顺序不一致的情况
for (int j = 0; j < targetFields.length; j++) {
Field targetField = targetFields[j];
if (sourceField.getName().equals(targetField.getName())) {
sourceField.setAccessible(true);
targetField.setAccessible(true);
if (!(sourceField.get(sourceBean) == null)) {
targetField.set(targetBean, sourceField.get(sourceBean));
}
}
}
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return targetBean;
}
这个方法的逻辑就是以数据源对象的值为主进行更新的,对双方对象的顺序和数量没有要求,但是两个属性的名称必须一致。