<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    飛艷小屋

    程序--人生--哲學___________________歡迎艷兒的加入

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      52 Posts :: 175 Stories :: 107 Comments :: 0 Trackbacks

    Java中的類反射機制

    (轉載)Java中的類反射機制

    ?

    一、反射的概念?:
    反射的概念是由Smith在1982年首次提出的,主要是指程序可以訪問、檢測和修改它本身狀態或行為的一種能力。這一概念的提出很快引發了計算機科學領域關于應用反射性的研究。它首先被程序語言的設計領域所采用,并在Lisp和面向對象方面取得了成績。其中LEAD/LEAD++?、OpenC++?、MetaXa和OpenJava等就是基于反射機制的語言。最近,反射機制也被應用到了視窗系統、操作系統和文件系統中。?

    反射本身并不是一個新概念,它可能會使我們聯想到光學中的反射概念,盡管計算機科學賦予了反射概念新的含義,但是,從現象上來說,它們確實有某些相通之處,這些有助于我們的理解。在計算機科學領域,反射是指一類應用,它們能夠自描述和自控制。也就是說,這類應用通過采用某種機制來實現對自己行為的描述(self-representation)和監測(examination),并能根據自身行為的狀態和結果,調整或修改應用所描述行為的狀態和相關的語義。可以看出,同一般的反射概念相比,計算機科學領域的反射不單單指反射本身,還包括對反射結果所采取的措施。所有采用反射機制的系統(即反射系統)都希望使系統的實現更開放。可以說,實現了反射機制的系統都具有開放性,但具有開放性的系統并不一定采用了反射機制,開放性是反射系統的必要條件。一般來說,反射系統除了滿足開放性條件外還必須滿足原因連接(Causally-connected)。所謂原因連接是指對反射系統自描述的改變能夠立即反映到系統底層的實際狀態和行為上的情況,反之亦然。開放性和原因連接是反射系統的兩大基本要素。13700863760

    Java中,反射是一種強大的工具。它使您能夠創建靈活的代碼,這些代碼可以在運行時裝配,無需在組件之間進行源代表鏈接。反射允許我們在編寫與執行時,使我們的程序代碼能夠接入裝載到JVM中的類的內部信息,而不是源代碼中選定的類協作的代碼。這使反射成為構建靈活的應用的主要工具。但需注意的是:如果使用不當,反射的成本很高。

    二、Java中的類反射:
    Reflection?是?Java?程序開發語言的特征之一,它允許運行中的?Java?程序對自身進行檢查,或者說“自審”,并能直接操作程序的內部屬性。Java?的這一能力在實際應用中也許用得不是很多,但是在其它的程序設計語言中根本就不存在這一特性。例如,Pascal、C?或者?C++?中就沒有辦法在程序中獲得函數定義相關的信息。

    1.檢測類:

    1.1?reflection的工作機制

    考慮下面這個簡單的例子,讓我們看看?reflection?是如何工作的。

    import?java.lang.reflect.*;
    public?class?DumpMethods?{
    ????public?static?void?main(String?args[])?{
    ????????try?{
    ????????????Class?c?=?Class.forName(args[0]);
    ????????????Method?m[]?=?c.getDeclaredMethods();
    ????????????for?(int?i?=?0;?i?<?m.length;?i++)
    ????????????????System.out.println(m[i].toString());
    ????????}?catch?(Throwable?e)?{
    ????????????System.err.println(e);
    ????????}
    ????}
    }

    按如下語句執行:

    java?DumpMethods?java.util.Stack

    它的結果輸出為:

    public?java.lang.Object?java.util.Stack.push(java.lang.Object)

    public?synchronized?java.lang.Object?java.util.Stack.pop()

    public?synchronized?java.lang.Object?java.util.Stack.peek()

    loading...
    posted on 2006-09-01 16:02 天外飛仙 閱讀(322) 評論(0)  編輯  收藏 所屬分類: java
    主站蜘蛛池模板: 久久亚洲免费视频| 国产a v无码专区亚洲av| 亚洲精品免费在线观看| 久久精品国产影库免费看| 亚洲av无码专区国产乱码在线观看| 一级视频在线免费观看| 亚洲乱码中文字幕综合| a级毛片免费播放| 亚洲精品在线观看视频| 亚洲视频在线观看免费视频| 亚洲激情电影在线| 中国在线观看免费高清完整版| 久久精品国产亚洲av麻豆蜜芽| 91视频国产免费| 亚洲AV永久无码天堂影院| 又黄又爽的视频免费看| 亚洲免费在线观看| 日本亚洲成高清一区二区三区| 免费视频成人片在线观看| 亚洲噜噜噜噜噜影院在线播放| 99精品国产免费久久久久久下载| 亚洲男人的天堂网站| 亚洲国产aⅴ综合网| 两个人看的www免费高清| 午夜亚洲AV日韩AV无码大全| 亚欧在线精品免费观看一区| 亚洲av综合av一区二区三区| 亚洲日韩在线观看| 性无码免费一区二区三区在线 | 国产乱子精品免费视观看片| 亚洲精品国产国语| 亚洲国产午夜中文字幕精品黄网站| 日本道免费精品一区二区| 亚洲色欲www综合网| jjzz亚洲亚洲女人| 嫩草成人永久免费观看| 亚洲乱亚洲乱妇24p| 中文字幕精品亚洲无线码二区| 成年人网站免费视频| 一道本在线免费视频| 亚洲成a人不卡在线观看|