一、Method類表明某個類中的一個成員方法java
二、獲得類中的某一個方法數組
例子: Method charAt = Class.forName("java.lang.String").getMethod("charAt", int.class);
三、調用方法spa
一般方式:System.out.println(str.charAt(1)); 反射方式: System.out.println(charAt.invoke(str, 1));
特別注意:若是傳遞給Method對象的invoke()方法的第一個參數爲null,這有着什麼樣的意義呢?說明該Method對象對應的是一個靜態方法!code
四、jdk1.4和jdk1.5的invoke方法的區別對象
Jdk1.5:public Object invoke(Object obj,Object... args) Jdk1.4:public Object invoke(Object obj,Object[] args),即按jdk1.4的語法,須要將一個數組做爲參數傳遞給invoke方法時,數組中的每一個元素分別對應被調用方法中的一個參數,因此,調用charAt方法的代碼也能夠用Jdk1.4改寫爲 charAt.invoke(「str」, new Object[]{1})形式。
再強調一遍參數類型用什麼來表示?用Class對象!ci
package staticimport.reflect.method; import java.lang.reflect.Method; public class ReflectMethodTest { public static void main(String[] args) throws Exception { String str = "abc"; //jdk1.5(可變參數) Method method = String.class.getMethod("charAt", int.class); System.out.println(method.invoke(str, 1)); //jdk1.4(數組方式) Method method2 = String.class.getMethod("charAt", new Class[]{int.class}); System.out.println(method2.invoke(str, new Object[]{2})); //調用靜態方法 Method method3 = Class.forName("java.lang.Math").getMethod("max", int.class,int.class); System.out.println(method3.invoke(null, 4, 100)); } }
某個變量屬於某個類,對變量的如何動做(方法)應隨之隸屬於該類!換句話說,我擁有該變量,那麼我就是該變量的全部者(專家)。如:車停、畫圓、關門等。get