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
    *****************************
  • 相关阅读:
    进程和线程(一)
    树和二叉树(一)
    栈和队列
    《Learning to Coordinate with Coordination Graphs in Repeated Single-Stage Multi-Agent Decision Problems》- ICML2018
    简单Socket网络通信
    Spring Websocket实现简易在线聊天功能
    Spring实现WebSocket通信
    Spring中配置使用slf4j + log4j
    构建web应用之——文件上传
    构建web应用之——SpringMVC实现CRUD
  • 原文地址:https://www.cnblogs.com/sunzn/p/2910888.html
Copyright © 2011-2022 走看看