从不调用MethodVisitor的visitParameter

时间:2017-03-04 13:22:44

标签: java java-bytecode-asm

我需要使用asm 5.2获取方法参数名称。我的来源是java 1.8。看看MethodVisitor#visitParameter的javadoc,似乎这正是我所需要的:

  

访问此方法的参数。

但这种方法从未被调用过。我认为这可能与缺少调试信息有关,因此我使用-g:source,lines,vars编译了这些类,但这也没有帮助。

我使用了visitLocalVariable,但为了我写作的实用程序的目的,我并不关心方法的代码,所以我正在考虑提供ClassReader.SKIP_CODE到ClassReader的接受方法。

我错过了什么?有没有办法让参数名称不用访问代码。

1 个答案:

答案 0 :(得分:3)

您需要使用-parameters选项编译您的类,以使 javac 包含参数名称。这就是为什么永远不会调用该方法的原因,如果没有包含参数名称的选项。

或者,您可以检查the visitLocalVariable method的参数名称。对于包含调试符号的非抽象方法,参数名称将包含在此处。