首页 > 代码库 > 反射之获取方法信息

反射之获取方法信息

 

本文接上文“反射之Class类的使用”,以编写一个用来获取类的信息(成员函数、成员变量)的工具类来讲解"反射之获取方法信息"

1、新建工具类,命名ClassUtil,输入一个对象(Object),输出该对象的基础信息方法(printClassMessage)

1 /**
2  * 打印类的信息,成员函数、成员变量
3  * Created by Format on 2017/6/3.
4  */
5 public class ClassUtil {
6 
7 }

2、获取类的信息,由于参数为对象,所以用上一节中方法2的方式获取类的类类型

 1 Class c = obj.getClass(); 

3、获取类的名

 1 System.out.println("类的名称是:" + c.getName()); 

4、获取类的方法

1 /**
2  * Methods类,方法对象
3  * 一个成员方法就是一个Method对象
4  * getMethods()方法是获取所有public的函数,包括父类继承而来
5  * getDeclaredMethods()获取的是所有该类自己声明的方法,不问访问权限
6  */
7 //Method [] ms = c.getMethods();
8 Method [] ms = c.getDeclaredMethods();

5、得到方法返回值的类类型

 1 Class returnType = m.getReturnType(); 

6、得到方法名称

 1 m.getName() 

7、获取参数类型

 1 Class[] paramTypes = m.getParameterTypes(); 

8、整体代码如下

技术分享
 1 package com.format.util;
 2 
 3 import java.lang.reflect.Method;
 4 
 5 /**
 6  * 打印类的信息,成员函数、成员变量
 7  * Created by Format on 2017/6/3.
 8  */
 9 public class ClassUtil {
10     public static void printClassMessage(Object obj){
11         //获取类的信息   获取类的类类型
12         Class c = obj.getClass();
13         //获取类的名称
14         System.out.println("类的名称是:" + c.getName());
15         /**
16          * Methods类,方法对象
17          * 一个成员方法就是一个Method对象
18          * getMethods()方法是获取所有public的函数,包括父类继承而来
19          * getDeclaredMethods()获取的是所有该类自己声明的方法,不问访问权限
20          */
21 //        Method [] ms = c.getMethods();
22         Method [] ms = c.getDeclaredMethods();
23         for (Method m : ms) {
24             //得到方法返回值的类类型
25             Class returnType = m.getReturnType();
26             System.out.print(returnType.getName() + " ");
27             //得到方法名称
28             System.out.print(m.getName() + "(");
29             //获取参数类型(得到的是参数列表的类型的类类型)
30             Class[] paramTypes = m.getParameterTypes();
31             for (Class paramType : paramTypes) {
32                 System.out.print(paramType.getName()+",");
33             }
34             System.out.println(")");
35         }
36 
37     }
38 }
View Code

9、编写测试类

 1 String s = "Hello"; 2 ClassUtil.printClassMessage(s); 

10、输出结果

技术分享

 

反射之获取方法信息