首页 > 代码库 > 反射之获取方法信息
反射之获取方法信息
本文接上文“反射之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 }
9、编写测试类
1 String s = "Hello"; 2 ClassUtil.printClassMessage(s);
10、输出结果
反射之获取方法信息
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。