首頁 >Java >java教程 >Java 反射怎麼獲得方法

Java 反射怎麼獲得方法

anonymity
anonymity原創
2019-05-08 15:02:064689瀏覽

什麼是java的反射機制?

JAVA反射機制是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態取得的資訊以及動態呼叫物件的方法的功能稱為java語言的反射機制。

要想解剖一個類別,必須先要取得到該類別的字節碼檔案物件。而解剖使用的就是Class類別中的方法.所以先要取得到每一個字節碼檔案對應的Class類型的物件.

反射就是把java類別中的各種成分映射成一個個的Java物件

例如:一個類別有:成員變數、方法、建構方法、套件等等訊息,利用反射技術可以對一個類別進行解剖,把個個組成部分映射成一個個物件。

如圖是類別的正常載入過程:反射的原理在與class物件。

熟悉一下載入的時候:Class物件的由來是將class檔案讀入內存,並為之建立一個Class物件。

Java 反射怎麼獲得方法

取得Class物件的三種方式

1.1 Object ——> getClass();

1.2 任何資料類型(包括基本資料類型)都有一個「靜態」的class屬性

1.3 透過Class類別的靜態方法:forName(String  className)(常用)

#其中1.1是因為Object類別中的getClass方法、因為所有類別都繼承Object類別。從而呼叫Object類別來取得

範例:透過反射呼叫類別定義的方法

@Test
    // 通过反射调用类定义的方法
    public void testInvokeMethod() throws Exception {
        Class clazz = Class.forName("java.lang.String");
        // 定义参数类型
        Class[] params = new Class[1];
        params[0] = String.class;
        Method m = clazz.getDeclaredMethod("indexOf", params);
        // 设置参数
        Object[] p = new Object[1];
        p[0] = "e";
        Integer s = (Integer) m.invoke("helloworld!", p);
        System.out.println(s);
    }

以上是Java 反射怎麼獲得方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn