62,614
社区成员
发帖
与我相关
我的任务
分享
public static Object cloneObject_recursion(Object obj){
if(obj==null){
return null;
}
Object newObject=null;
Class<?> clazz=obj.getClass();
if(isBaseData(clazz)){
return cloneBasicData(obj);
}else{
try {
if(clazz.isArray()){
Object newArray=Array.newInstance(clazz.getComponentType(),Array.getLength(obj));
for(int i=0;i<Array.getLength(obj);i++){
Object temp_obj=getElement(obj,i);
setElement(newArray,i,cloneObject_recursion(temp_obj));
}
return newArray;
}
newObject=clazz.newInstance();
}catch(InstantiationException e){
e.printStackTrace();
}catch(IllegalAccessException e){
e.printStackTrace();
}
Field[] fields=clazz.getDeclaredFields();
for(int i=0;i<fields.length;i++){
Object property=getProperty(obj,fields[i]);
setProperty(newObject,fields[i],cloneObject_recursion(property));
}
}
return newObject;
}