淺析Java反射機制,淺析java反射

來源:互聯網
上載者:User

淺析Java反射機制,淺析java反射

一、什麼是反射

  動態擷取類的資訊以及動態調用對象的方法稱為Java的反射(Reflection)機制。反射提供了封裝程式集、模組和類型的對象。在Java運行時環境中,對於任意一個類的對象,可以通過反射擷取這個類的資訊。

二、反射的作用

  Java反射機制允許程式在運行時透過Reflection APIs取得任意一個已知名稱的class的內部資訊,包括modifiers(如public、static等)、superclass(如Object)、實現的interfaces(如Serializable)、fields(屬性)和methods(方法)(但不包括methods定義),可於運行時改變fields的內容,也可調用methods.

三、Java Reflection API簡介

  在JDK中,主要由以下類實現Java反射機制:

    ①Class類:代表一個類;

    ②Field類:代表類的成員變數(屬性);

    ③Method類:代表類的方法;

    ④Constructor類:代表類的構造方法;

    ⑤Array類:提供了動態建立數組,以及訪問數組元素的靜態方法;

    以上類中,Class類在java.lang包,其餘位於java.lang.reflect包。

  java.lang.Object類(所有類的超類)定義了getClass()方法,任意一個Java對象都可以通過此方法獲得它的class。

  Class類是Reflection API中的核心類,主要有以下方法:

    ①getName():擷取類的名字;

    ②getFields():擷取類中public類型的屬性;

    ③getDeclaredFields():擷取類的所有屬性(包括public、protected、default、private);

    ④getMethods():擷取類中public類型的方法;

    ⑤getDeclaredMethods():擷取類的所有方法;

    ⑥getMethod(String name,Class[] parameterTypes):擷取類的指定方法,name:指定方法的名字,parameterType:指定方法的參數類型;

    ⑦getConstrutors():擷取類中public類型的構造方法;

    ⑧getConstrutor(Class[] parameterTypes):擷取類的指定構造方法,parameterTypes:指定構造方法的參數類型;

    ⑨newInstance():通過類預設的不帶參數的構造方法建立該類的一個對象;

註:在訪問私人屬性和私人方法時,需要對訪問的私人屬性或方法設定setAccessible(true)使被反射的類抑制java的訪問檢查機制。否則會報IllegalAccessException異常。

聯繫我們

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