public static void main(String[] args) {
Student student = new Student();
student.setName("我是谁");
student.setAge(99);
Student2 student1 = new Student2();
setTargetFromSource(student1 , student);
System.out.println(student1.toString());
}
public static void setTargetFromSource(Object target, Object source) {
if (target == null || source == null) {
return;
}
Class classTarget = target.getClass();
Class classSource = source.getClass();
Field[] fieldTarget = classTarget.getDeclaredFields();
Field[] fieldSource = classSource.getDeclaredFields();
try {
for (int i = 0; i < fieldTarget.length; i++) {
for (int j = 0; j < fieldSource.length; j++) {
if (fieldTarget[i].getName().equals(fieldSource[j].getName()) &&
fieldTarget[i].getGenericType().toString().equals(fieldSource[i].getGenericType().toString())) {
fieldTarget[i].setAccessible(true);
fieldSource[j].setAccessible(true);
fieldTarget[j].set(target, fieldSource[i].get(source));
break;
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void setTargetFromSource1(Object target, Object source) {
if (target == null || source == null) {
return;
}
Map<String, Field> mapField = new HashMap<>();
Class classTarget = target.getClass();
Class classSource = source.getClass();
Field[] fieldTarget = classTarget.getDeclaredFields();
Field[] fieldSource = classSource.getDeclaredFields();
try {
for (int i = 0; i < fieldSource.length; i++) {
mapField.put(fieldSource[i].getName(), fieldSource[i]);
}
for (int i = 0; i < fieldTarget.length; i++) {
if (mapField.containsKey(fieldTarget[i].getName()) &&
fieldTarget[i].getGenericType().toString().equals(mapField.get(fieldTarget[i].getName()).getGenericType().toString())) {
fieldTarget[i].setAccessible(true);
mapField.get(fieldTarget[i].getName()).setAccessible(true);
fieldTarget[i].set(target, mapField.get(fieldTarget[i].getName()).get(source));
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}
}