java 2个对象合并 同一个对象 不合并null 代码怎么写
可以定义一个方法,接收两个对象作为参数,将两个对象的属性值合并到一个新的对象中。如果属性值为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,因此不进行合并。
原文地址: https://www.cveoy.top/t/topic/bkeD 著作权归作者所有。请勿转载和采集!