import java.lang.reflect.Field;
import java.util.*;
/**
* 任意对象拷贝相同字段值
* @param s
* @param t
* @param <SOURCE>
* @param <TARGET>
*/
public static <SOURCE, TARGET> void copyValue(SOURCE s, TARGET t) {
try {
Map<String, Object> fieldNameAndValue = getFieldNameAndValue(s);
Class clazz = Class.forName(t.getClass().getName());
//根据Class对象获得属性 私有的也可以获得
Field[] fields = clazz.getDeclaredFields();
for (Field f : fields) {
if (fieldNameAndValue.containsKey(f.getName())) {
f.setAccessible(true);
f.set(t, fieldNameAndValue.get(f.getName()));
}
}
}catch (Exception e){
e.printStackTrace();
}
}
方法getFieldNameAndValue见反射(4) : 获取对象的所有字段名和字段值_Lxinccode的博客-CSDN博客