java - Java调用方法时如何获取方法参数名称

标签 java

例如:

我有一个如下定义的方法:

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”的名称。我怀疑有人可以获取您的示例中编写的本地方法变量 aabb 的名称。

获取有关参数名称的一些数据的另一种方法是使用注释。您可以定义自定义注释(我们称之为@Param),然后按如下方式使用它:

render(@Param("fileName") "index.html", @Param("aa") "aaaaa", @Param("bb") "bbbb");

现在您可以使用反射 API 提取参数名称。注释可以在方法定义或方法调用时使用。

这就是 Spring MVC 的工作原理。

关于java - Java调用方法时如何获取方法参数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10160804/

相关文章:

java - 为什么我的归一化 vector 的方向如此不准确?

java - 当我想查看 100 行(可滚动)时,JTable 只显示 10 行

java - Android 中简单格式日期解析失败

java - ResultSet 元数据返回时间戳而不是日期 Oracle JDBC

java - 在什么情况下父类(super class)不应该是抽象的?

java - 过滤掉数字Java

java - 使用类参数时,类型绑定(bind)不是通过构造函数推断的吗?

java - Wicket:是否可以从线程更新标签值?

java - 在java中随机生成整数数组的问题

java - 在一行中读取多个坐标 (Java)