反射 方法反射的操作

方法的反射

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 public class MethodReflect {
10 
11     public static void main(String[] args) {
12         // 要获取方法,就得先获取类的信息,要获取类的信息,就得先获取类的类类型
13         A a = new A();
14         Class c = a.getClass();
15         try {
16             // 获取方法对象,由方法名和参数列表来确定某一方法
17             Method m1 = c.getMethod("test");
18             Method m2 = c.getMethod("test", new Class[] { int.class, int.class });
19             /**
20              * 方法反射的操作。
21              * 以前方法的调用:a.test(a, b) 
22              * 反射操作:是用Method对象来进行方法调用
23              * invoke(Object obj,Object...(可变参数列表,三种传参方式))
24              */
25             m1.invoke(a);
26             m2.invoke(a, 10, 20);
27             m2.invoke(a, new Object[] { 10, 21 });
28 
29         } catch (Exception e) {
30             e.printStackTrace();
31         }
32     }
33 }
34 
35 class A {
36 
37     public void test() {
38         System.out.println("hello world!");
39     }
40 
41     public void test(int a, int b) {
42         System.out.println(a + b);
43     }
44 
45     public void test(String a, String b) {
46         System.out.println(a + b);
47     }
48 }

运行结果:

猜你喜欢

转载自www.cnblogs.com/fangzhang/p/9162047.html