java反射機制簡介

來源:互聯網
上載者:User

 

Java中的反射機制通俗地說就是把Java類中的各種成分映射成相應的Java類。

對於Java程式而言,利用反射機制會導致程式效能的下降。

我們知道每個Java類都可以用一個Class類的對象來表示,一個類的組成部分:成員變數,方法,構造方法,包結構等等資訊也用一個個類來表示,就像汽車是一個類,汽車的組成部分:發動機、變速箱、底盤等也可以是一個個的類。表示Java類的Class類顯然要提供一系列的方法來獲得此類中的變數、方法、構造方法、修飾符、包結構等資訊,這些資訊也用相應的Java;類的執行個體對象來表示,它們是Field、Method、Constructor、Package等等。

要瞭解反射機制必須要熟悉Java API中的與反射相關的類。

#首先來看看Constructor類

Constructor代表某個類中的一個構造方法:

    1. 得到某個類所有的構造方法:

        例子:Constructor[] constructors = Class.forName("java.lang.String").getConstructors();

    2.得到某一個構造方法:

       例子:Constructor constructor = Class.forName("java.lang.String").getConstructor(StringBuffer.class);

    3.建立執行個體對象:

       通常方式:String str = new String(new StringBuffer("abc"));

       反射方式:String str = (String)constructor.newInstance(new StringBuffer("abc");

    4.與3相比較,Class類中也有非靜態方法newInstance()

       例子:String str = (String)Class.forName("java.lang.String").newInstance();

       該方法內部先得到預設的構造方法(Constructor對象,無參),然後用該構造方法建立執行個體對象。

       該方法內部用了緩衝機制來儲存預設構造方法的執行個體對象(Constructor對象,無參)。

#然後是Field類

Field類代表某個類中的一個成員變數

       getField(name)方法得到的Field執行個體對象是與其所屬類的具體對象無關的,僅表示所屬類的域。

#然後是Method類

Method類代表某個類中的一個成員方法

     1.得到類中的某一個方法

       例子:Method methodCharAt = String.class.getMethod("charAt", int.class);

    2.調用方法

       通常方式:System.out.println(str.charAt(1));

       反射方式:System.out.println(methodCharAt.invoke(str, 1));

             如果傳遞給Method對象的invoke方法的第一個參數為null,則表示該Method對象對應的是一個靜態方法。

     3.jdk 1.4和jdk 1.5的invoke方法的區別

       jdk 1.4:public Object invoke(Object obj, Object[] args)

       jdk 1.5:public Object invoke(Object obj, Object... args)

       jdk 1.5相容jdk 1.4的文法,所以2中的反射字碼頁可以改寫為jdk 1.4的形式:methodCharAt.invoke(str, new Object[]{1});

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.