java两个类相同属性值赋值
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()); } /** * 第一种方法 * @param target 需要赋值的对象 * @param source 数据源 */ 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(); } }
/** * 第二种方法 * @param target 需要赋值的对象 * @param source 数据源 */ 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(); } }
下一篇:
Java版本和JDK版本的关系