我需要使用asm 5.2获取方法参数名称。我的来源是java 1.8。看看MethodVisitor#visitParameter
的javadoc,似乎这正是我所需要的:
访问此方法的参数。
但这种方法从未被调用过。我认为这可能与缺少调试信息有关,因此我使用-g:source,lines,vars
编译了这些类,但这也没有帮助。
我使用了visitLocalVariable
,但为了我写作的实用程序的目的,我并不关心方法的代码,所以我正在考虑提供ClassReader.SKIP_CODE
到ClassReader的接受方法。
我错过了什么?有没有办法让参数名称不用访问代码。
答案 0 :(得分:3)
您需要使用-parameters
选项编译您的类,以使 javac 包含参数名称。这就是为什么永远不会调用该方法的原因,如果没有包含参数名称的选项。
或者,您可以检查the visitLocalVariable
method的参数名称。对于包含调试符号的非抽象方法,参数名称将包含在此处。