怎么合并一个实例的两个不同对象

在工作过程中,我们可能会遇到这么一个需求,就是对于同一个类的两个不同对象(就是不为空的属性各不同)怎么合并他们成一个对象,并且包含他们两个的所有属性。

因为要获取一个对象的所有属性,我们自然想到要用反射,于是就有了下面的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public static <T> T combineSydwCore(T sourceBean, T targetBean){
Class sourceBeanClass = sourceBean.getClass();
Class targetBeanClass = targetBean.getClass();

Field[] sourceFields = sourceBeanClass.getDeclaredFields();
Field[] targetFields = targetBeanClass.getDeclaredFields();
for(int i=0; i<sourceFields.length; i++){
Field sourceField = sourceFields[i];
if(Modifier.isStatic(sourceField.getModifiers())){
continue;
}
Field targetField = targetFields[i];
if(Modifier.isStatic(targetField.getModifiers())){
continue;
}
sourceField.setAccessible(true);
targetField.setAccessible(true);
try {
if( !(sourceField.get(sourceBean) == null) && !"serialVersionUID".equals(sourceField.getName())){
targetField.set(targetBean, sourceField.get(sourceBean));
}
} catch (IllegalArgumentException | IllegalAccessException e) {
e.printStackTrace();
}
}
return targetBean;
}

怎么合并一个实例的两个不同对象
https://www.chuckfang.com/2020/09/28/How-to-merge-two-different-objects-in-one-instance/
作者
方程
发布于
2020年9月28日
许可协议