在 Java 中,可以通过将两个对象的属性逐一进行比较,来实现将两个对象合并。如果两个对象的属性不同,则将非 null 属性值赋给新对象,如果两个对象的属性相同,则保留原有对象的属性值。

以下是一个示例代码:

public class ObjectMerger {
    public static <T> T merge(T o1, T o2) throws IllegalAccessException {
        if (o1 == null && o2 == null) {
            return null;
        }
        if (o1 == null) {
            return o2;
        }
        if (o2 == null) {
            return o1;
        }
        Class<?> clazz = o1.getClass();
        if (!clazz.equals(o2.getClass())) {
            throw new IllegalArgumentException("Objects must be of the same type");
        }
        T result = (T) clazz.newInstance();
        Field[] fields = clazz.getDeclaredFields();
        for (Field field : fields) {
            field.setAccessible(true);
            Object value1 = field.get(o1);
            Object value2 = field.get(o2);
            if (value1 == null && value2 == null) {
                continue;
            } else if (value1 == null) {
                field.set(result, value2);
            } else if (value2 == null) {
                field.set(result, value1);
            } else if (!value1.equals(value2)) {
                field.set(result, value2);
            } else {
                field.set(result, value1);
            }
        }
        return result;
    }
}

这个方法接收两个同类型的对象作为参数,然后遍历对象的所有属性,将两个对象的属性值进行比较,将不同的属性值赋给新对象。如果两个对象的属性值相同,则保留原有对象的属性值。如果两个对象的属性值都为 null,则跳过该属性。如果两个对象的类型不同,则抛出 IllegalArgumentException 异常。

Java 对象合并:如何优雅地合并两个对象并避免 null 值

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

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