可以定义一个方法,接收两个对象作为参数,将两个对象的属性值合并到一个新的对象中。如果属性值为null,则不进行合并。

示例代码:

public static <T> T merge(T obj1, T obj2) throws IllegalAccessException, InstantiationException {
    if (obj1 == null && obj2 == null) {
        return null;
    }
    if (obj1 == null) {
        return obj2;
    }
    if (obj2 == null) {
        return obj1;
    }

    Class<?> clazz = obj1.getClass();
    T result = (T) clazz.newInstance();

    Field[] fields = clazz.getDeclaredFields();
    for (Field field : fields) {
        field.setAccessible(true);
        Object value1 = field.get(obj1);
        Object value2 = field.get(obj2);
        if (value1 != null) {
            field.set(result, value1);
        } else if (value2 != null) {
            field.set(result, value2);
        }
    }

    return result;
}

使用示例:

public static void main(String[] args) throws IllegalAccessException, InstantiationException {
    Person p1 = new Person("John", 30, "New York");
    Person p2 = new Person(null, 35, "Los Angeles");

    Person p3 = merge(p1, p2);
    System.out.println(p3.getName()); // Output: John
    System.out.println(p3.getAge()); // Output: 30
    System.out.println(p3.getAddress()); // Output: New York
}

在上面的示例中,我们定义了一个Person类,包含name、age和address三个属性。我们创建了两个Person对象p1和p2,然后将它们合并到一个新的Person对象p3中。p1的name属性不为null,因此p3的name属性被设置为John。p1的age和address属性也被设置为p3的属性值。p2的name属性为null,因此不进行合并。

java 2个对象合并 同一个对象 不合并null 代码怎么写

原文地址: https://www.cveoy.top/t/topic/bkeD 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录