Above code:
public static void main(String[] args) throws Exception {
User user1 = new User();
user1.setPhone("1111111111");
user1.setUsername("1111111111");
user1.setHead("1111111111");
User user2 = new User();
user2.setEmail("2222222222");
user2.setPassword("2222222222");
user2.setCreateUser("2222222222");
User user = mergeObject(user1, user2);
System.out.println(user);
}
/**
* description 合并对象(该方法是用于相同对象不同属性值的合并)
*
* @author yanzy
* @version 1.0
* @date 2021/9/13 11:09
*/
public static User mergeObject(User user1, User user2) throws Exception {
Class user1Class = user1.getClass();
Class user2Class = user2.getClass();
Field[] user1Fields = user1Class.getDeclaredFields();
Field[] user2Fields = user2Class.getDeclaredFields();
for (int i = 0; i < user1Fields.length; i++) {
Field sourceField = user1Fields[i];
if (Modifier.isStatic(sourceField.getModifiers())) {
continue;
}
Field targetField = user2Fields[i];
if (Modifier.isStatic(targetField.getModifiers())) {
continue;
}
sourceField.setAccessible(true);
targetField.setAccessible(true);
if (sourceField.get(user1) != null) {
targetField.set(user2, sourceField.get(user1));
}
}
return user2;
}
You can see the following is the result after the merge is complete: