【发布时间】:2020-10-24 12:08:37
【问题描述】:
我正在尝试找到一种方法来合并同一对象的不同实例。这样 Object2 会覆盖 Object1 但 Object2 具有空值的位置将 Object1 值保持原样。假设有一个 Object1 包含以下内容。
------
public class Object1 {
private List<A> listOfTwoStrings;
private List<B> classBContainsTwoStrings;
}
------
public class A {
private String name;
private String age;
}
------
public class B {
private String name;
private List<Attribute> attributes;
}
------
public class Attribute {
private String attributeName;
private String attributeValue;
}
------
我相信我一直在做的测试只是复制了一层,所以还没有。
public Object1 mergeObjects(Object1 object1, Object1 object2) throws
IllegalAccessException, NoSuchFieldException {
for (Field field : object2.getClass().getDeclaredFields()) {
field.setAccessible(true);
String name = field.getName();
Object value = field.get(object2);
//If it is a non null value copy to destination
if (null != value) {
Field destField = object1.getClass().getDeclaredField(name);
destField.setAccessible(true);
destField.set(object1, value);
}
}
return object1;
}
【问题讨论】:
标签: java