隨筆 - 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


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


          網站導航:
           
          主站蜘蛛池模板: 工布江达县| 揭西县| 吉林省| 深圳市| 湘阴县| 伊川县| 长阳| 衡东县| 连山| 宁国市| 禹州市| 湖南省| 衢州市| 商水县| 修水县| 海安县| 都兰县| 平罗县| 惠来县| 电白县| 舞钢市| 承德县| 石林| 三穗县| 临沭县| 富裕县| 隆安县| 柳河县| 新泰市| 台南县| 云阳县| 鞍山市| 思南县| 沙河市| 阜康市| 普兰店市| 石门县| 团风县| 石泉县| SHOW| 云和县|