类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);