目的:从java字节码文件中获取公共方法签名(返回值,参数,方法名称)。
我正在使用ObjectWeb ASM框架。
问题:我浏览了ASM的API规范并尝试了几个示例,但我仍然不知道如何获取签名。 MethodNode
类有一个签名字段,但值为null。
答案 0 :(得分:11)
您可以尝试这样的事情:
ClassReader cr = new ClassReader(is);
cr.accept(new EmptyVisitor() {
public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) {
if((Opcodes.ACC_PUBLIC & access)>0) {
System.err.println("method name: " + name);
System.err.println("return type: " + Type.getReturnType(desc));
System.err.println("argument types: " + Arrays.toString(Type.getArgumentTypes(desc)));
}
return super.visitMethod(access, name, desc, signature, exceptions);
}
}, 0);