原创 java 两个对象相同属性合并merge(即同名属性null丢弃取不为空的值)通用方法代码
分类:spring,java 126人阅读 IT小君 2023-04-15 11:01
代码作者:chatgpt,体验地址:https://yy123.ink/chatgpt
适用场景:前端提交update对象是,对象属性赋值处理,属性合并
以下是Java 8中的通用方法代码,用于合并两个对象的相同属性。如果两个对象具有同名属性,该方法将使用第一个对象的值,如果第一个对象的值为null,则使用第二个对象的值。
public static T merge(T target, T source){
if(source == null) {
return target;
}
if(target == null) {
return source;
}
Class clazz = source.getClass();
while(clazz != null){
for(Field field: clazz.getDeclaredFields()){
field.setAccessible(true);
try{
Object sourceValue = field.get(source);
Object targetValue = field.get(target);
if(sourceValue != null && targetValue == null){
field.set(target, sourceValue);
}
}
catch(IllegalAccessException e){
// ignore
}
}
clazz = clazz.getSuperclass();
}
return target;
}
该方法使用泛型,因此可以用于任何类型的对象。它使用Java的反射机制,以便可以在运行时获取对象的属性和值。在合并过程中,该方法将遍历源对象和目标对象的所有属性,并将源对象的非空属性值复制到目标对象中。如果目标对象的属性值为null,则使用源对象的属性值。最终,该方法将返回目标对象。