原创 

java 两个对象相同属性合并merge(即同名属性null丢弃取不为空的值)通用方法代码

分类:spring,java    369人阅读    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,则使用源对象的属性值。最终,该方法将返回目标对象。

支付宝打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者

 工具推荐 更多»