例如:
我有一个如下定义的方法:
class MyController extends Controller {
public void index() {
String aa = "1111";
int bb = 122;
render("index.html", aa, bb);
}
}
现在,我想获取参数名称:aa 和 bb 来构建 HashMap:
Map map = new HashMap();
map.set("aa", aa);
map.set("bb", bb);
我看到很多MVC框架都可以这样做,请问是如何实现的?反射或字节码黑客或编译时处理?
PS:我知道如何获取方法参数名称(通过调试编译),但我需要在调用时知道方法参数名称。
最佳答案
我认为您的 MVC 框架做了其他事情。 它可能使用反射来提取方法参数的名称。 例如,如果您的方法 render 定义为
void render(字符串文件,字符串a,字符串b)
您的框架(和您)可以获得参数“a”和“b”的名称。我怀疑有人可以获取您的示例中编写的本地方法变量 aa
和 bb
的名称。
获取有关参数名称的一些数据的另一种方法是使用注释。您可以定义自定义注释(我们称之为@Param
),然后按如下方式使用它:
render(@Param("fileName") "index.html", @Param("aa") "aaaaa", @Param("bb") "bbbb");
现在您可以使用反射 API 提取参数名称。注释可以在方法定义或方法调用时使用。
这就是 Spring MVC 的工作原理。
关于java - Java调用方法时如何获取方法参数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10160804/