一尘不染

获取方法参数的名称

java

Java 6中 ,假设我具有以下方法签名:

public void makeSandwich(Bread slice1, Bread slice2, List<Filling> fillings, boolean mustard)

我想知道在运行时传递给slice2任何其他参数的值,这里重要的一点是我想通过参数名称获取该值。

我知道如何使用getParameterTypes或获取参数类型的列表getGenericParameterTypes

理想情况下,我想获取参数 名称 而不是类型的列表。有办法吗?


阅读 160

收藏
2020-09-08

共1个答案

一尘不染

如果您告诉编译器将其包括在内,则可以使用参数名称(使用调试信息进行编译)。Spring
ParameterNameDiscoverer可以帮助您获取名称。该默认实现使用ASM
ClassReader这样做。

javac您一起应包含-g要包含调试信息的参数。我认为使用Eclipse是默认的。可以使用以下参数进行配置:Java->编译器,然后启用“存储有关方法参数的信息(可通过反射使用)”。

一些框架使用此。例如,spring-mvc具有@RequestParam可解析的默认名称。它还支持显式命名-
@RequestParam("foo")如果不提供调试信息。

2020-09-08