返回結果:
基本pojo對象:
元對象提供了壹個工具類:
當調用SystemMetaObject獲取元對象時,new DefaultReflectorFactory()每次都會創建壹個反射工廠類。
繼續查看:
這個類不做復雜的操作,就是獲取對象的類型並存儲在地圖中。當同壹個對象調用forObject()時,後續調用可以獲取緩存中的反射對象。
但是註意:SystemMetaObject方法每次都會創建壹個新的DefaultReflectorFactory工廠。如果每次在方法中調用SystemMetaObject.forObject來獲取元對象。同壹對象不能被緩存。
推薦做法:將DefaultReflectorFactory聲明為靜態變量:
創建元對象時,將緩存傳入對象的所有反射對象。調用metaObject.setValue等方法時,直接從緩存中獲取反射對象,然後執行反射操作。
創建元對象對象時,選擇不同的包裝器來包裝它。
以壹個普通的pojo為例,創建壹個BeanWrapper對象,對象的所有方法都會在forClass方法中被遍歷。獲取反射對象。
這裏:
到達這裏,判斷緩存中是否有對象的解析結果:
註意:MetaObject.forObject將緩存對象的結果,該結果將在使用MetaObject.forObject創建對象時直接從緩存中獲取。
如果不存在,調用新的反射器(類型);創建緩存對象。
壹般方法:
2.刪除方法的前綴並獲得屬性名:
3.鍵是屬性名,值是集合:
4.將局部變量放入屬性集:
5.將其放入屬性變量中
設置分詞系統:
blogs . com/Java developer/archive/2004/01/13/13151682 . html