天天看点

Java对象拷贝

public static void copy(Object src , Object tar){

try {

Class<?> srcClazz = src.getClass();

Class<?> tarClazz = tar.getClass();

Field[] srcClazzDeclaredFields = srcClazz.getDeclaredFields();

for(Field srcField : srcClazzDeclaredFields){

String srcFieldNameBefore = srcField.getName();

String srcFieldNameFirstUp = srcFieldNameBefore.substring(0,1).toUpperCase()

srcFieldNameBefore.substring(1,srcFieldNameBefore.length());

Method srcMethod = null;

Method tarMethod = null;

String getMethodName = "get" + srcFieldNameFirstUp;

String setMethodName = "set" + srcFieldNameFirstUp;

Class reType = null;

srcMethod = srcClazz.getDeclaredMethod(getMethodName);

}catch (Exception e){}

if(srcMethod != null){

reType = srcMethod.getReturnType();

tarMethod = tarClazz.getDeclaredMethod(setMethodName , reType);

if(tarMethod != null){

Object obj = srcMethod.invoke(src);

tarMethod.invoke(tar,obj);

}

}catch (Exception e){

e.printStackTrace();