直接貼代碼吧。。java
package com.java8; import java.lang.reflect.Field; import java.lang.reflect.Modifier; /** * 將 src Object 經過java反射機制轉化爲target Object * @author stupidwolf * */ public class CastSrcObjToTargObj { /** * * @param src 源類 實例 * @param targetObjectClassName 將被轉化的目的類,需提供具體的 class name(例如 "aaa.bb.c.ClassName"), * 以及該類須要提供一個無參的構造方法 ; * @return 若是可以轉換則返回經反射處理後獲得的目的類的實例,不然返回null */ public static Object castSrcObjToTargObj (Object srcInstance, String targetObjectClassName) { Class<?> targetClazz = null; Object targetInstance = null; try { targetClazz = Class.forName(targetObjectClassName); targetInstance = targetClazz.newInstance(); Field[] srcFields = srcInstance.getClass().getDeclaredFields(); Field[] targFields = targetInstance.getClass().getDeclaredFields(); for (int i = 0, srcLength = srcFields.length; i < srcLength; i ++) { srcFields[i].setAccessible(true); for (int j = 0, targLength = targFields.length; j < targLength; j ++ ) { if (targFields[j].getName().equals(srcFields[i].getName()) && !Modifier.isFinal(targFields[i].getModifiers())) { targFields[j].setAccessible(true); targFields[j].set(targetInstance, srcFields[i].get(srcInstance) ); break; } } } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } return targetInstance; } }