java reflect機制

來源:互聯網
上載者:User

JAVA反射機制(java reflect):

         在JAVA運行時環境中,對於任意一個類,能否知道這個類有哪些屬性和方法。對於任意一個對象,能否調用他的方法。這些答案是肯定的,這種動態擷取類的資訊,以及動態調用類的方法的功能來源於JAVA的反射。從而使JAVA具有動態語言的特性。

JAVA發射機制主要提供以下功能:

1、在運行時判斷任意一個對象所屬的類

2、在運行時構造任意一個類的對象

3、在運行時判斷任意一個類所具有的成員變數和方法(通過反射甚至可以調用private方法)

4、在運行時調用任意一個對象的方法(******注意:前提都是在運行時,而不是在編譯時間)

JAVA反射相關的API簡介:

        位於java.lang.reflect包中

        --Class類:代表一個類

        --Filed類:代表類的成員變數

        --Method類:代表類的方法

        --Constructor類:代表類的構造方法

        --Array類:提供了動態建立數組,以及訪問數組的元素的靜態方法。該類中的所有方法都是靜態方法

------Class類

        在JAVA的Object類中的申明了數個應該在所有的JAVA類中被改寫的methods:hashCode(),equals(),clone(),toString(),getClass()等,其中的getClass()返回一個Class類型的對象。

         Class類十分特殊,它和一般的類一樣繼承自Object,其實體用以表達java程式運行時的class和interface,也用來表達enum,array,primitive,Java Types以及關鍵字void,當載入一個類,或者當載入器(class loader)的defineClass()被JVM調用,便產生一個Class對象,Class是Reflection起源,針對任何你想探勘的class(類),唯有先為他產生一個Class的對象,接下來才能經由後者喚起為數十多個的反射API。

          JAVA允許我們從多種途徑為一個類Class產生對應的Class對象。

          --運用getClass():Object類中的方法,每個類都擁有此方法 String str = "abc"; Class cl = str.getClass();

    --運用Class.getSuperclass():Class類中的方法,返回該Class的父類Class

    --運用Class.forName()靜態方法:

    --運用 .Class:類名.Class

    --運用primitive wrapper classes的TYPE文法:基本類型封裝類TYPE,如:Integer.TYPE(注意TYPE的使用,只適合原生(基本)資料類型)

    --運行時產生instance,想產生對象的實體,在反射動態機制中有兩種方法,一個針對無變數的構造方法,一個針對帶參數的構造方法,如果想調用帶參數的構造方法,就比較麻煩,不能直接調用Class類中的newInstance(),而是調用Constructor類中newInstance()方法,首先準備一個Class[]作為Constructor的參數類型。然後調用該Class對象的geiConstructor()方法獲得一個專屬的Constructor的對象,最後再準備一個Object[]作為Constructor對象一樣的newInstance()方法的實參。

     在這裡需要說明的是只有兩個類擁有newInstance()方法,分別是Class類和Constructor類,其中Class類中的newInstance()方法是不帶參數的,而Constructro類中的newInstance()方法是帶參數的。

聯繫我們

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