反射(二)
方法的反射
1、如何获取某个方法
方法的名称和参数列表才能唯一确定某一个方法
2、方法反射的操作
method.invoke(对象,参数列表);
3、示例
1 package com.reflect; 2 3 import java.lang.reflect.Method; 4 5 /** 6 * @author 作者:方o丈 7 * @version 创建时间:2018年6月9日 下午11:06:27 8 * 类说明:方法反射的操作 9 */ 10 public class MethodReflect { 11 12 public static void main(String[] args) { 13 // 要获取方法,就得先获取类的信息,要获取类的信息,就得先获取类的类类型 14 A a = new A(); 15 Class c = a.getClass(); 16 try { 17 // 获取方法对象,由方法名和参数列表来确定某一方法 18 Method m1 = c.getMethod("test");//无参构造器,可不传参数列表参数 19 Method m2 = c.getMethod("test", new Class[] { int.class, int.class });//有两个参数的构造器 20 /** 21 * 方法反射的操作。 22 * 以前方法的调用:a.test(a, b) 23 * 反射操作:是用Method对象来进行方法调用 24 * invoke(Object obj,Object...(可变参数列表,三种传参方式)) 25 */ 26 m1.invoke(a);//执行无参构造器,可不传参数列表参数 27 m2.invoke(a, 10, 20);//执行两个参数构造器 28 m2.invoke(a, new Object[] { 10, 21 });//执行两个参数构造器 29 30 } catch (Exception e) { 31 e.printStackTrace(); 32 } 33 } 34 } 35 36 class A { 37 38 public void test() { 39 System.out.println("hello world!"); 40 } 41 42 public void test(int a, int b) { 43 System.out.println(a + b); 44 } 45 46 public void test(String a, String b) { 47 System.out.println(a + b); 48 } 49 }
运行结果: