首页 > 代码库 > java反射复制属性值
java反射复制属性值
1 /** 将sourceObj的属性拷贝到targetObj 2 * @param sourceObj 3 * @param targetObj 4 * @param clazz 从哪一个类开始(比如sourceObj对象层级为:Object->User->ChineseUser->ChineseMan->ChineseChongQingMan) 5 * 如果需要从ChineseUser开始复制,clazz就指定为ChineseUser.class 6 */ 7 public static void cpoyObjAttr(Object sourceObj, Object targetObj, Class<?> clazz)throws Exception 8 { 9 if(sourceObj==null || targetObj==null)10 { 11 throw new Exception("源对象和目标对象不能为null"); 12 } 13 Field[] fields=clazz.getDeclaredFields(); 14 for(int i = 0; i < fields.length; i++)15 {16 //System.out.println(fields[i].getName());17 //Object sourceValue=http://www.mamicode.com/fields[i].get(sourceObj); 18 19 Method getMethod = sourceObj.getClass().getMethod("get" + fields[i].getName());20 Object sourceValue = http://www.mamicode.com/(Object) getMethod.invoke(sourceObj, null);21 if(null==sourceValue)22 {23 sourceValue = http://www.mamicode.com/null;24 } 25 fields[i].setAccessible(true); 26 fields[i].set(targetObj,sourceValue);27 28 // System.out.println(fields[i].getName()+";"+clazz+";"+fields[i].getType()); 29 // Method setMethod = targetObj.getClass().getMethod("set" +fields[i].getName(), fields[i].getType());30 // setMethod.invoke(targetObj, sourceValue.toString());31 } 32 if(clazz.getSuperclass()==Object.class){ 33 return; 34 } 35 cpoyObjAttr(sourceObj,targetObj,clazz.getSuperclass()); 36 }
java反射复制属性值
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。