5

我需要在运行时获取方法的参数名称。有什么办法可以做到这一点?

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

4

1 回答 1

2

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

例如:(取自这里

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

这将创建LocalVariableTable如下

本地变量表:

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

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

于 2013-08-12T04:10:53.147 回答