利用動態反射將map對應字段轉化為Bean物件字段

2021-08-21 01:26:11 字數 1847 閱讀 1675

很多情況下,map對應的屬性字段需要轉化為model類的屬性字段,前幾天工作中需要將四五十個對應字段轉化為bean物件的字段,如果單純的考get/set進行重複**的封裝,太枯燥又繁瑣,現使用動態反射的方式對所有字段進行批量轉化。但前提是兩者的欄位名得保持一致才行。

獻上工具類**:

/**  

* 將map物件通過反射機制轉換成bean物件

*

* @param mapresult 存放資料的map物件

* @param clazz 待轉換的class

* @return 轉換後的bean物件

* @throws exception 異常

*/

public static object maptobean(hashmapmapresult, class<?> clazz) throws exception catch(nosuchmethodexception e)

}

}

return obj;

}/**

* 將object型別的值,轉換成bean物件屬性裡對應的型別值

*

* @param value object物件值

* @param fieldtypeclass 屬性的型別

* @return 轉換後的值

*/

private static object convertvaltype(object value, class<?> fieldtypeclass) else if(integer.class.getname().equals(fieldtypeclass.getname())

|| int.class.getname().equals(fieldtypeclass.getname())) else if(float.class.getname().equals(fieldtypeclass.getname())

|| float.class.getname().equals(fieldtypeclass.getname())) else if(double.class.getname().equals(fieldtypeclass.getname())

|| double.class.getname().equals(fieldtypeclass.getname())) else

return retval;

}

/**

* 獲取指定欄位名稱查詢在class中的對應的field物件(包括查詢父類)

*

* @param clazz 指定的class

* @param fieldname 欄位名稱

* @return field物件

*/

private static field getclassfield(class<?> clazz, string fieldname)

field declaredfields = clazz.getdeclaredfields();

for (field field : declaredfields)

}

class<?> superclass = clazz.getsuperclass();

if(superclass != null)

return null;

}

測試的情況,大家可以寫個map放入幾個屬性,另外寫個bean類,測試下。我測試完全符合自己的需求。

有需要的拿去用吧!

利用反射將map值set進對應的實體中

前幾天呼叫第三方應用,其中的乙個是獲取人員詳細資訊的介面,欄位說多不多,說少也不少,我就想著懶得get再set了。仔細觀察了一下,發現返回的型別是map型別,而且value基本上都是string型別。即使該物件裡面還有實體,也是map型別,因此,就想到了用反射來賦值對應實體 public class...

利用反射將實體類物件轉成Map

在我們程式設計的過程中往往會用到反射,利用反射有時候可以更容易的做到一些事情,下面就說乙個反射的實際應用場景吧,就是將object轉化成乙個map,object裡的屬性名對應map的key,object裡的屬性值對應map的value public static mapobjecttomap obj...

利用反射獲取類的所有字段

以下是利用反射獲取類refpoint中所有的字段。一,refpoint類 public class refpoint public class class02 二,列印出所有類refpoint中的所有字段 refpoint refpoint01 new refpoint 3 type typeobj...