/**
* 源对象对比替换目标对象(对象类型必须相同)
*
* @param orig 资源对象
* @param dest 目标对象
* @param clazz 源对象类
* @param ignoreNull 是否忽略空(true:忽略,false:不忽略)
* @return
*/
public static <T> T copyProperties(T source, T target, Class<?> clazz, boolean ignoreNull) {
if (source == null || target == null)
return null;
if(!clazz.isAssignableFrom(source.getClass()))
return null;
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
try {
field.setAccessible(true);
Object value = field.get(source);
if(!java.lang.reflect.Modifier.isFinal(field.getModifiers())){
if(!(ignoreNull && value == null)){
field.set(target, value);
}
}
field.setAccessible(false);
} catch (Exception e) {
}
}
if(clazz.getSuperclass() == Object.class){
return target;
}
return copyProperties(source, target, clazz.getSuperclass(), ignoreNull);
}
java源对象对比替换目标对象
最新推荐文章于 2024-07-03 02:51:34 发布