Java 编程下通过反射获取一个类中的方法名和对应参数名
实际编程中如果我们要使用系统中未暴露的方法,我们可以通过反射来使用这些方法,但在使用过程中我们很难确定方法对用的参数类型,以下的代码可以帮你得到这些信息:
package cn.sunzn.reflectcase; import java.lang.reflect.Method; public class GetMethod { public static void main(String[] args) { getMethodInfo("java.util.HashSet"); } /** * 传入全类名获得对应类中所有方法名和参数名 */ @SuppressWarnings("rawtypes") private static void getMethodInfo(String pkgName) { try { Class clazz = Class.forName(pkgName); Method[] methods = clazz.getMethods(); for (Method method : methods) { String methodName = method.getName(); System.out.println("方法名称:" + methodName); Class<?>[] parameterTypes = method.getParameterTypes(); for (Class<?> clas : parameterTypes) { String parameterName = clas.getName(); System.out.println("参数名称:" + parameterName); } System.out.println("*****************************"); } } catch (ClassNotFoundException e) { e.printStackTrace(); } } }
传入 java.util.HashSet 的运行结果如下:
方法名称:add 参数名称:java.lang.Object ***************************** 方法名称:clone ***************************** 方法名称:clear ***************************** 方法名称:iterator ***************************** 方法名称:remove 参数名称:java.lang.Object ***************************** 方法名称:contains 参数名称:java.lang.Object ***************************** 方法名称:isEmpty ***************************** 方法名称:size ***************************** 方法名称:equals 参数名称:java.lang.Object ***************************** 方法名称:hashCode ***************************** 方法名称:removeAll 参数名称:java.util.Collection ***************************** 方法名称:toString ***************************** 方法名称:addAll 参数名称:java.util.Collection ***************************** 方法名称:containsAll 参数名称:java.util.Collection ***************************** 方法名称:retainAll 参数名称:java.util.Collection ***************************** 方法名称:toArray 参数名称:[Ljava.lang.Object; ***************************** 方法名称:toArray ***************************** 方法名称:wait ***************************** 方法名称:wait 参数名称:long 参数名称:int ***************************** 方法名称:wait 参数名称:long ***************************** 方法名称:getClass ***************************** 方法名称:notify ***************************** 方法名称:notifyAll *****************************
专注移动互联网产品设计研发 分享最新的移动互联网产品和技术