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
    *****************************
  • 相关阅读:
    关于ceph的一些问题及解决
    Kubernetes 安装Rook ceph 1.5
    Flex布局语法教程
    MediaWiki安装随记
    Windows下的PHP开发环境搭建——PHP线程安全与非线程安全、Apache版本选择,及详解五种运行模式。
    windows的php7安装memcache扩展
    MediaWiki投放广告代码的几种办法
    mediawiki 常见配置功能
    mysql 添加用户 删除用户 赋权
    apache24配置php7
  • 原文地址:https://www.cnblogs.com/sunzn/p/2910888.html
Copyright © 2011-2022 走看看