获取接口方法的参数名称

Par*_*g A 5 java spring

我需要在运行时获取方法的参数名称.有没有办法实现这个目标?

我尝试使用LocalVariableTableParameterNameDiscoverer哪个是Spring类.但它只适用于类而不是接口.

San*_*osh 2

获取参数名称的唯一方法是使用-g:vars选项编译源代码。这会LocalVariableTable在类文件中生成一个属性。为了优化,通常会删除它。

例如:(取自这里

public class Example {
   public int plus(int a){
     int b = 1;
     return a + b;
   }
 }
Run Code Online (Sandbox Code Playgroud)

这将创建一个LocalVariableTable如下

局部变量表:

   Start  Length  Slot  Name     Signature
   0      6       0     this     LExample;
   0      6       1     a        I
   2      4       2     b        I
Run Code Online (Sandbox Code Playgroud)

可以使用任何字节码工具库(如ASMJavassist )LocalVariableTable读取。