• 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
    *****************************
  • 相关阅读:
    http学习笔记(一)
    关于花瓣网header条的思考
    前端知识体系之入门篇总结(一)
    浮动理解【转】
    CSS选择器比较:queryselector queryselectorall
    javascript模块化
    【C#】 Stopwatch详解
    ArcGIS图层添加字段出现:“定义了过多字段”
    [SWMM]出现问题及解决
    ArcGIS:从DEM数据提取对应点的高程
  • 原文地址:https://www.cnblogs.com/sunzn/p/2910888.html
Copyright © 2020-2023  润新知