目的
对于我这种半路出家的码代码的,一直以来最不好的习惯就是非常依赖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,大家一起学习交流。