java 两个对象合并_关于反射:在Java中合并两个对象

我有两个相同类型的对象。

Class A {

String a;

List b;

int c;

}

A obj1 = new A();

A obj2 = new A();

obj1 => {a ="hello"; b = null; c = 10}

obj2 => {a = null; b = new ArrayList(); c = default value}

您能否让我知道将这些对象组合为单个对象的最佳方法是什么?

obj3 = {a ="hello"; b = (same arraylist from obj2); c = 10}

您能描述一下这个"合并"对象的外观吗?

如果obj1.a ="George"和obj2.a ="Lucas"在"合并"对象中的obj3.a值应该是什么?

您可以假设对象是互斥的

只要您具有自己的getter和setter的POJO都可以使用。该方法使用update中的非空值更新obj。它在obj上调用setParameter(),并在更新时返回getParameter()的返回值:

public void merge(Object obj, Object update){

if(!obj.getClass().isAssignableFrom(update.getClass())){

return;

}

Method[] methods = obj.getClass().getMethods();

for(Method fromMethod: methods){

if(fromMethod.getDeclaringClass().equals(obj.getClass())

&& fromMethod.getName().startsWith("get")){

String fromName = fromMethod.getName();

String toName = fromName.replace("get","set");

try {

Method toMetod = obj.getClass().getMethod(toName, fromMethod.getReturnType());

Object value = fromMethod.invoke(update, (Object[])null);

if(value != null){

toMetod.invoke(obj, value);

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

}

感谢您的回答...但是我的对象有很多原始类型,例如int,float e.t.c.它还具有列表作为成员。

没关系。只要两个对象都具有ge

你可能感兴趣的:(java,两个对象合并)