zoukankan      html  css  js  c++  java
  • 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
    *****************************
  • 相关阅读:
    html基础知识整理
    全局变量报错:UnboundLocalError: local variable 'l' referenced before assignment
    python简易版学生管理系统
    L2-024. 部落(并查集)
    python 飞机大战 实例
    Python3没有dict.has_key方法
    python学习-字符串 列表 元祖
    vim产生的.swap文件
    caffe 参数介绍 solver.prototxt
    ReentrantLock 实现原理
  • 原文地址:https://www.cnblogs.com/sunzn/p/2910888.html
Copyright © 2011-2022 走看看