最近在封裝一個數據訪問框架的時候,用到了不少反射獲取實體值的方法。 數據庫
最開始採用的是BeanUtils.describe(bean) ,但在插入數據庫的常常報數據類型錯誤的異常。看了下源碼,BeanUtils調用的是BeanUtilsBean的這個getNestedProperty方法,該方法在讀取值以後,會再調用一次(getConvertUtils().convert(value));,進行類型轉化成String。 所以BeanUtils.describe轉化出來的Map的value都是String。 框架
通過查閱,能夠採用PropertyUtils類,調用PropertyUtils.describe(bean)方法。
spa
這兩個方法,基本上實現原理相似,內部代碼不少都相同的,但在讀取bean的某個屬性的時候都是調用的某個類的getNestedProperty(bean, name)方法。其實主要的區別就在這個方法中,PropertyUtils是調用的PropertyUtilsBean的這個方法,該方法讀取屬性值(調用getXxx方法)以後,value不作轉化 。 get