public static <T> T Update(T beforeUpdate,T update){ try { if(beforeUpdate==null) return update; if(update==null) return beforeUpdate; Class<? extends Object> clazz = beforeUpdate.getClass(); Class<? extends Object> clazzUpdate = update.getClass(); Field[] fields = clazzUpdate.getDeclaredFields();//得到要修改的对象的属性数组 for (int i=0;i<fields.length;i++){ Field field = fields[i]; //得到每个属性 field.setAccessible(true); //打破封装 String name = field.getName(); //得到属性名 Class type=field.getType(); //得到该属性的类型 Object value = field.get(update); //得到该属性的get方法的值 if(value!=null){ //找到与原对象相同的属性的set方法 Method m=clazz.getMethod("set"+upperCase(name),type); m.invoke(beforeUpdate,value);//给该方法设置值 } } } catch (Exception e) { e.printStackTrace(); } return beforeUpdate; }
//首字母转大写,转小写就加32 public static String upperCase(String str) { char[] ch = str.toCharArray(); ch[0] = (char) (ch[0] - 32); return new String(ch); }