概述
代码如下:
/*
* 获取方法参数名
*/
private String[] getMethodVariableNames(String targetClass, String targetMethodName) {
Class<?> clazz = null;
try {
clazz = Class.forName(targetClass);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
ClassPool pool = ClassPool.getDefault();
pool.insertClassPath(new ClassClassPath(clazz));
CtClass cc;
CtMethod cm = null;
try {
cc = pool.get(clazz.getName());
cm = cc.getDeclaredMethod(targetMethodName);
} catch (NotFoundException e) {
e.printStackTrace();
}
// 使用javaassist的反射方法获取方法的参数名
MethodInfo methodInfo = cm.getMethodInfo();
CodeAttribute codeAttribute = methodInfo.getCodeAttribute();
LocalVariableAttribute attr = (LocalVariableAttribute) codeAttribute.getAttribute(LocalVariableAttribute.tag);
String[] variableNames = new String[0];
try {
variableNames = new String[cm.getParameterTypes().length];
} catch (NotFoundException e) {
e.printStackTrace();
}
int staticIndex = Modifier.isStatic(cm.getModifiers()) ? 0 : 1;
for (int i = 0; i < variableNames.length; i++)
variableNames[i] = attr.variableName(i + staticIndex);
return variableNames;
}
Javassist是一个开源的分析、编辑和创建Java字节码的类库。
合理应用,极为强大,值得掌握的第三方类库。
最后
以上就是矮小招牌为你收集整理的javassist:获取方法参数名的全部内容,希望文章能够帮你解决javassist:获取方法参数名所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复