注意:复制的是两个对象中相同的字段
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
public class CopyObject {
/**
* 复制对象中两个对象中相同字段对于的值
* @param objOne 被复制的对象
* @param objTwo 返回的对象
* @return
*/
public Object copyValue(Object objOne,Object objTwo){
//获取objOne的字段
Class<? extends Object> objOneClass = objOne.getClass();
Field[] objOneField = objOneClass.getDeclaredFields();
//获取objTwo的字段
Class<? extends Object> objTwoClass = objOne.getClass();
Field[] objTwoField = objTwoClass.getDeclaredFields();
try {
for (Field fieldOne : objOneField) {
//跳过id
if (fieldOne.getName().equalsIgnoreCase("id")) {
continue;
}
fieldOne.setAccessible(true);
Object value = fieldOne.get(objOne);
for (Field fieldTwo : objTwoField){
//判断是否存在final修饰符
if (Modifier.isFinal(fieldTwo.getModifiers())){
continue;
}
//两个对象的字段名相同
if (fieldOne.getName().equalsIgnoreCase(fieldTwo.getName())) {
fieldTwo.setAccessible(true);
fieldTwo.set(objTwo, value);
}
}
}
}catch (Exception e){
e.printStackTrace();
}
return objTwo;
}
}