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=fields[i].get(sourceObj); 18 19 Method getMethod = sourceObj.getClass().getMethod("get" + fields[i].getName()); 20 Object sourceValue = (Object) getMethod.invoke(sourceObj, null); 21 if(null==sourceValue) 22 { 23 sourceValue = 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 }