【问题标题】:How to get method signature with ObjectWeb ASM?如何使用 ObjectWeb ASM 获取方法签名?
【发布时间】:2011-05-25 00:50:02
【问题描述】:

用途:从java字节码文件中获取公共方法签名(返回值、参数、方法名)。

我正在使用 ObjectWeb ASM 框架。

问题:我浏览了 ASM 的 API 规范并尝试了几个示例,但我仍然不知道如何获取签名。 MethodNode类有签名字段,但值为null。

【问题讨论】:

    标签: java methods bytecode signature


    【解决方案1】:

    你可以试试这样的:

    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);
    

    【讨论】:

    • 有没有办法获取参数值?
    • @EhsanMashhadi 也许。这取决于你真正需要做什么。所以,你真的应该把它作为一个单独的问题提交,并在那里提供所有补充细节。
    • 我只想获取访问过的任何方法的参数值。我发现获取参数类型和方法名称是一件容易的事,但是我阅读了一些有关获取值的答案,但我根本不明白它是否可能。你能帮帮我吗?
    • @EhsanMashhadi 您需要发布自己的新问题,而不是评论另一个问题的答案。
    猜你喜欢
    • 2013-07-23
    • 1970-01-01
    • 1970-01-01
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多