Java反射機制

來源:互聯網
上載者:User

標籤:font   class類   edm   構造器   建立   tco   優點   位元組碼   編程   

Java反射機制

一、定義

       指在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;

        對於任意一個對象,都能調用它的任意一個方法;

        這種動態擷取資訊以及動態調用對象方法的功能叫Java語言的反射機制。

二、應用

        1、產生動態代理;

         2、面向切片編程(在調用方法的前後各加棧幀)。

三、優點與缺點

       靜態編譯:在編譯時間確定類型,綁定對象,即通過。 
       動態編譯:運行時確定類型,綁定對象。動態編譯最大限度發揮了java的靈活性,體現了多態的應用,有以降低類之間的藕合性。 
       反射機制的優點就是可以實現動態建立對象和編譯,體現出很大的靈活性,特別是在J2EE的開發中它的靈活性就表現的十分明顯。

       反射機制的缺點是對效能有影響。使用反射基本上是一種解釋操作,我們可以告訴JVM,我們希望做什麼並且它滿足我們的要求。這類操作總是慢於只直接執行相同的操作。

四、常用方法

  (1)獲得建構函式的方法 

    Constructor getConstructor(Class[] params)//根據指定參數獲得public構造器

    Constructor[] getConstructors()//獲得public的所有構造器

    Constructor getDeclaredConstructor(Class[] params)//根據指定參數獲得public和非public的構造器

    Constructor[] getDeclaredConstructors()//獲得public的所有構造器 
  (2)獲得類方法的方法 
    Method getMethod(String name, Class[] params),根據方法名,參數類型獲得方法

    Method[] getMethods()//獲得所有的public方法

    Method getDeclaredMethod(String name, Class[] params)//根據方法名和參數類型,獲得public和非public的方法

    Method[] getDeclaredMethods()//獲得所以的public和非public方法 
 (3)獲得類中屬性的方法 
    Field getField(String name)//根據變數名得到相應的public變數

    Field[] getFields()//獲得類中所以public的方法

    Field getDeclaredField(String name)//根據方法名獲得public和非public變數

    Field[] getDeclaredFields()//獲得類中所有的public和非public方法 

五、擷取Class類

Person p1 = new Person();//下面的這三種方式都可以得到位元組碼CLass c1 = Date.class();p1.getClass(); //若存在則載入,否則建立,往往使用第三種,類的名字在寫來源程式時不需要知道,到運行時再傳遞過來
Class.forName("java.lang.String");

  

Java反射機制

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.