获取接口方法的参数名称

时间:2013-08-12 02:59:54

标签: java spring

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

我尝试使用LocalVariableTableParameterNameDiscoverer这是一个Spring类。但它只适用于类而不适用于接口。

1 个答案:

答案 0 :(得分:2)

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

例如:(taken from here

public class Example {
   public int plus(int a){
     int b = 1;
     return a + b;
   }
 }

这将创建一个LocalVariableTable,如下所示

LocalVariableTable:

   Start  Length  Slot  Name     Signature
   0      6       0     this     LExample;
   0      6       1     a        I
   2      4       2     b        I

可以使用任何字节码检测库(如ASMJavassist)读取LocalVariableTable