隨筆 - 3, 文章 - 152, 評論 - 17, 引用 - 0
          數據加載中……

          Java反射簡述

          Java中反射Reflection就是對類信息的元數據的描述與操作,首先是對加載的類的信息的獲得,其次是實例化和操作對象。

          類信息有java.lang.Class提供描述。Class對象由三種方法獲得,第一是調用對象的getClass()方法;第二是直接使用類的.class形式;第三是直接使用Class.forName(String)的形式;

          和反射打交道使用較多的類是java.lang.reflect.MethodFieldConstructor分別對應方法調用、屬性與屬性修改、構造函數使用三個方面,具體api查看文檔;數組類型比較特殊具體參考java.lang.reflect.Array

          關于反射的兩個誤解:反射代碼速度很慢;反射代碼都是復雜的;

          ――――如果使用得當,反射不會降低性能,正確的使用反射實際上應該改進代碼的可維護性。反射的直接使用應該僅局限于基礎機構類,不應該被分散到應用對象中。Rod Johnson

          反射的api學習不是關鍵,關鍵是掌握其本質,并能夠在實際中合適的使用它。掌握反射是一個認真的java程序員該做到的。實際中已用到的反射的例子:strutsformbean從請求中自動填充、apacheBeanUtil包;strutsDispatchAction根據參數傳遞的方法名字動態調用本實例的具體方法;工廠模式中根據參數傳遞的類名來動態加載并實例化一個產品。

           

                 動態代理

          jdk1.3提供的一種在運行時實現特定接口并生成相應代理實現,從而可以截取對該接口實現的調用。截取對每個實現方法的調用對處理提供了很大的空間,你可以在方法調用前后進行相關的處理,同時還可以隨意調用非實現對象的方法。這種截取適用于資源的獲得和釋放、記錄日志、獲取性能信息等情況。動態代理是一種Aspect Oriented Programming (AOP)的實現,同時經常在容器和服務器級別使用。

          實際使用動態代理的例子:代理Connection來自動關閉該連接打開的Statement;在業務方法前后添加日志記錄。

          posted on 2005-07-19 09:18 閱讀(264) 評論(0)  編輯  收藏 所屬分類: Reflection


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 中卫市| 北票市| 宁夏| 玛沁县| 平安县| 河源市| 离岛区| 大同县| 商河县| 洪泽县| 南雄市| 报价| 遵义县| 太白县| 稻城县| 天峨县| 祥云县| 宣汉县| 曲水县| 新邵县| 商河县| 平定县| 昂仁县| 惠水县| 宜兴市| 甘孜| 华蓥市| 星子县| 鸡泽县| 云梦县| 澳门| 无棣县| 龙门县| 金寨县| 琼结县| 石景山区| 始兴县| 永登县| 太湖县| 利津县| 嘉定区|