合并两个java bean对象非空属性(泛型)

Posted 一路前行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了合并两个java bean对象非空属性(泛型)相关的知识,希望对你有一定的参考价值。

import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;

class Beanutils{
    //merge two bean by discovering differences
    public static <M> void merge(M target, M destination) throws Exception {
        BeanInfo beanInfo = Introspector.getBeanInfo(target.getClass());

        // Iterate over all the attributes
        for (PropertyDescriptor descriptor : beanInfo.getPropertyDescriptors()) {

            // Only copy writable attributes
            if (descriptor.getWriteMethod() != null) {
                Object originalValue = descriptor.getReadMethod()
                        .invoke(target);

                // Only copy values values where the destination values is null
                if (originalValue == null) {
                    Object defaultValue = descriptor.getReadMethod().invoke(
                            destination);
                    descriptor.getWriteMethod().invoke(target, defaultValue);
                }

            }
        }
    }
}

 

以上是关于合并两个java bean对象非空属性(泛型)的主要内容,如果未能解决你的问题,请参考以下文章

java bean属性拷贝工具类比对(性能+功能)

java使用反射比较两个bean对象属性值是否相等

如何在java中合并两个复杂对象

java如何判断非空

java两个对象比较属性值

java 将两个相同对象不同属性list合并?