如何使用ObjectWeb ASM获取方法签名?

Fia*_*ary 6 java methods bytecode signature

目的:从java字节码文件中获取公共方法签名(返回值,参数,方法名称).

我正在使用ObjectWeb ASM框架.

问题:我扫描了ASM的API规范并尝试了几个例子,但我仍然不知道如何获得签名.本MethodNode类有一个签名字段,但值为空.

Eug*_*hov 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);
Run Code Online (Sandbox Code Playgroud)