隨筆 - 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 閱讀(258) 評論(0)  編輯  收藏 所屬分類: Reflection


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


          網站導航:
           
          主站蜘蛛池模板: 偏关县| 绍兴县| 阳高县| 宿松县| 克什克腾旗| 抚宁县| 龙陵县| 呼图壁县| 交口县| 林西县| 淳安县| 广安市| 乐都县| 马鞍山市| 花垣县| 日喀则市| 清涧县| 富宁县| 三穗县| 青川县| 濮阳县| 吉水县| 阜南县| 三门峡市| 洪泽县| 嵊州市| 武山县| 蓬安县| 宁城县| 大渡口区| 庐江县| 策勒县| 白玉县| 连云港市| 万盛区| 长武县| 吉木萨尔县| 瑞安市| 建阳市| 南丰县| 苍山县|