反射(二)

方法的反射

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 }

运行结果:

 

posted on 2018-06-10 01:16  方o丈  阅读(142)  评论(0编辑  收藏  举报

导航