从未调用 MethodVisitor 的 visitParameter

visitParameter of MethodVisitor is never called

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

Visits a parameter of this method.

但是这个方法从来没有被调用过。我认为可能是缺少调试信息有关,所以我用-g:source,lines,vars编译了类,但这也没有帮助。

我求助于使用 visitLocalVariable,但出于我正在编写的实用程序的目的,我不关心方法的代码,所以我正在考虑提供 ClassReader.SKIP_CODE ClassReader 的接受方法。

我是不是漏了什么?有没有办法获取访问代码的参数名称w/o

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

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