什麼是java的反射機制?
JAVA反射機制是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態取得的資訊以及動態呼叫物件的方法的功能稱為java語言的反射機制。
要想解剖一個類別,必須先要取得到該類別的字節碼檔案物件。而解剖使用的就是Class類別中的方法.所以先要取得到每一個字節碼檔案對應的Class類型的物件.
反射就是把java類別中的各種成分映射成一個個的Java物件
例如:一個類別有:成員變數、方法、建構方法、套件等等訊息,利用反射技術可以對一個類別進行解剖,把個個組成部分映射成一個個物件。
如圖是類別的正常載入過程:反射的原理在與class物件。
熟悉一下載入的時候:Class物件的由來是將class檔案讀入內存,並為之建立一個Class物件。
取得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中文網其他相關文章!