類Method:提供關於類或接口上單獨某個方法(以及如何訪問該方法)的信息。
A:獲取所有方法 數組
1、getMethods 獲取該類包括其父類的公共成員方法
2、getDeclaredMethods 獲取該類的所有的成員方法
B:獲取單個方法
1、getMethod 獲取該類所有的公共類單個成員方法
2、getDeclaredMethod 獲取該類所有類型的單個成員方法
A.1:獲取該類包括其父類的公共成員方法
//獲取字節碼文件 Class c = Class.forName("zl_Relfect_01.Person"); //獲得該類與父類的所有的公共成員方法 Method[] m1 = c.getMethods(); for(Method m : m1){ System.out.println(m); }
A.2:getDeclaredMethods 獲取該類的所有的成員方法
1 //獲取字節碼文件 2 Class c = Class.forName("zl_Relfect_01.Person"); 3 //獲取該類的所有類型的成員方法 4 Method[] m1 = c.getDeclaredMethods(); 5 for(Method m : m1){ 6 System.out.println(m); 7 }
B:獲取單個成員方法:
1 //獲取字節碼文件 2 Class c = Class.forName("zl_Relfect_01.Person"); 3 //無參構造創建對象 4 Constructor con = c.getConstructor(); 5 Object obj = con.newInstance(); 6 7 //獲取該類單個無參無返回值公共類型的成員方法 8 //無參的成員方法,只需寫成員方法的名稱 9 Method m1 = c.getMethod("show"); 10 // public Object invoke(Object obj,Object... args) 返回值是Object接收,第一個參數表示對象是誰,第二參數表示調用該方法的實際參數 11 //show是無參,無返回值構造 12 m1.invoke(obj);//調用Person類的show方法 13 14 15 //獲取該類單個有參有返回值公共類型的成員方法 16 Method m2 = c.getMethod("method", String.class); 17 //沒有返回值 18 m2.invoke(obj, "哈嘍");////調用Person類的method方法 19 20 //獲取該類單個有參有返回值公共類型的成員方法 21 Method m3 = c.getMethod("getString", String.class,int.class); 22 //有返回值, public Object invoke(Object obj,Object... args) 返回值是Object接收 23 Object ob1 = m3.invoke(obj, "哈嘍",123); 24 System.out.println(ob1); 25 26 //獲取該類單個 無參無返回值的私有成員方法 27 Method m4 = c.getDeclaredMethod("function"); 28 //取消語言訪問檢查 29 m4.setAccessible(true); 30 //調用Person類的function方法 31 m4.invoke(obj);