我是靠谱客的博主 矮小招牌,这篇文章主要介绍javassist:获取方法参数名,现在分享给大家,希望可以做个参考。

代码如下:

 

	/*
* 获取方法参数名
*/
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内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(104)

评论列表共有 0 条评论

立即
投稿
返回
顶部