This question already has answers here:
Can I obtain method parameter name using Java reflection?
(15个答案)
7年前关闭。
我需要在运行时获取方法的参数名称。有什么办法可以做到这一点?
我尝试使用
这将创建一个
LocalVariableTable:
可以使用任何字节码检测库(如ASM或Javassist)读取
(15个答案)
7年前关闭。
我需要在运行时获取方法的参数名称。有什么办法可以做到这一点?
我尝试使用
LocalVariableTableParameterNameDiscoverer
这是一个Spring类。但是它仅适用于类而不适用于接口(interface)。 最佳答案
获取参数名称的唯一方法是使用-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
可以使用任何字节码检测库(如ASM或Javassist)读取
LocalVariableTable
。10-06 02:04