博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Java】利用反射获取class中的所有方法
阅读量:6414 次
发布时间:2019-06-23

本文共 2659 字,大约阅读时间需要 8 分钟。

目的

对于我这种半路出家的码代码的,一直以来最不好的习惯就是非常依赖Ctr+C和Ctr+V,但是如果代码量大的话一直切换Tab找来找去特别不方便。最近在将一部分接口测试自动化,刚好重新学下Java,一个case就会包含很多method,翻来翻去十分不方便,于是就想把一个class中的.java文件中的所有method遍历出来。

方案

一开始想看下Python能不用正则的方法直接读取.java文件然后匹配出来所有的方法名,后来想想估计代价有点高,pass;

刚好接触到Java的反射,利用反射机制获取到所有的方法和参数类型
代码

package push;import java.lang.reflect.Method;public class getmethod {   public static void main(String[] args) {       getMethodInfo("push.Demo");   }   /**    * 传入全类名获得对应类中所有方法名和参数名    */   @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(); } }}

输出

方法名称:main参数类型:[Ljava.lang.String;*****************************方法名称:sendAndroidUnicast_normal*****************************方法名称:sendAndroidBroadcast_normal*****************************方法名称:sendAndroidUnicast_mul*****************************方法名称:sendAndroidUnicast_bid*****************************方法名称:sendAndroidUnicast_tzh*****************************方法名称:sendAndroidUnicast_ten*****************************方法名称:sendAndroidUnicast_tzhlong*****************************方法名称:sendAndroidUnicast_tenlong*****************************方法名称:sendAndroidUnicast_tsp*****************************方法名称:sendAndroidUnicast_txzh*****************************方法名称:sendAndroidUnicast_txen*****************************方法名称:sendAndroidUnicast_txzhlong*****************************方法名称:sendAndroidUnicast_txenlong

等等......

这样我就可以愉快的快速粘贴到case文件中了,哈哈

.......

@Test    public void title_en() {        try {            demo.sendAndroidUnicastten();        } catch (Exception ex) {            ex.printStackTrace();        }    }       @Test    public void title_zh() {        try {            demo.sendAndroidUnicast_tzh();        } catch (Exception ex) {            ex.printStackTrace();        }    }    @Test    public void title_zhlong() {        try {            demo.sendAndroidUnicast_tzhlong();        } catch (Exception ex) {            ex.printStackTrace();        }    }    ......

总结

反射的确是个好东西

不过码代码手速快的,还是一行一行的打吧,哈哈

欢迎加入学习交流群569772982,大家一起学习交流。

转载地址:http://okcra.baihongyu.com/

你可能感兴趣的文章
产品设计体会(3013)项目的“敏捷沟通”实践
查看>>
RHEL6.3基本网络配置(1)ifconfig命令
查看>>
网络诊断工具之—路由追踪tracert命令
查看>>
Java模拟HTTP的Get和Post请求(增强)
查看>>
php 环境搭建(windows php+apache)
查看>>
让虚拟机的软盘盘符不显示(适用于所有windows系统包括Windows Server)
查看>>
Cygwin不好用
查看>>
jQuery插件之验证控件jquery.validate.js
查看>>
[经验]无线鼠标和无线键盘真的不能用了?——雷柏的重生之路~
查看>>
【转】plist涉及到沙盒的一个问题
查看>>
GNU make manual 翻译( 一百四十五)
查看>>
重构之美-走在Web标准化设计的路上[复杂表单]3 9 Update
查看>>
linux中的优先搜索树的实现--prio_tree【转】
查看>>
转载: 打造自己的asp.net验证控件
查看>>
重构之美-跨越Web标准,触碰语义网[开门见山:Microformat]
查看>>
git入门与实践【转】
查看>>
WPF 虚拟键盘
查看>>
储存卡无法打开专家教您怎么数据恢复
查看>>
彼得原理
查看>>
如何利用【百度地图API】,制作房产酒店地图?(下)——结合自己的数据库...
查看>>