java反射获取方法参数名称

java原始的反射是不能获取方法菜蔬的名称的..这里借住了地方jar包


使用maven管理jar

<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.18.1-GA</version>
</dependency>


java示范代码

 Class clazz = IExample.class;  
		    try {  
		        ClassPool pool = ClassPool.getDefault();  
		        CtClass cc = pool.get(clazz.getName());  
		        CtMethod cm = cc.getDeclaredMethod("getName");  
		  
		        // 使用javaassist的反射方法获取方法的参数名  
		        MethodInfo methodInfo = cm.getMethodInfo();  
		        CodeAttribute codeAttribute = methodInfo.getCodeAttribute();  
		        LocalVariableAttribute attr = (LocalVariableAttribute) codeAttribute.getAttribute(LocalVariableAttribute.tag);  
		        if (attr == null) {  
		            // exception  
		        }  
		        String[] paramNames = new String[cm.getParameterTypes().length];  
		        int pos = Modifier.isStatic(cm.getModifiers()) ? 0 : 1;  
		        for (int i = 0; i < paramNames.length; i++)  
		            paramNames[i] = attr.variableName(i + pos);  
		        // paramNames即参数名  
		        for (int i = 0; i < paramNames.length; i++) {  
		            System.out.println(paramNames[i]);  
		        }  
		  
		    } catch (NotFoundException e) {  
		        e.printStackTrace();  
		    }  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值