cor*_*iKa 5 java named-parameters
我目前正在尝试从外部系统设置一些参数。我有一个带有命名参数的请求,为了正确设置变量,我在服务调用上使用了带注释的方法参数。一个简化的例子可能是
public Response loginAttempt(@MyParam("username") String username, @MyParam("password") String password) {
// login logic here
}
Run Code Online (Sandbox Code Playgroud)
显然,对每个参数名称进行注释既烦人又重复(尽管这样做确实有一个小优点,那就是让我可以在不同版本的API上更改名称,这很重要)。
如果我能够在自己的反思部分中简单地引用参数名称,那将非常非常方便。现在,我在其中获取参数及其注释,记下它们的顺序,对该顺序进行排列,然后运行。
我知道在Java的早期版本中,这根本无法完成。我还知道Java发布的版本比以往任何时候都快,具有比以往任何时候都更新和更现代的功能。不幸的是,具有15年信息的信噪比太高,不足以得到确切的答案。这是现代Java可以完成的事情吗?
从Java 8开始,如果您使用javac -parametersoption 编译代码,并且方法参数将被保留,则存在缺点。问题主要是类文件的大小,请查看“ 获取方法参数的名称”文档。
您可以java.lang.reflect.Parameter.getName()用来获取方法参数名称:
Method m = getClass().getMethods()[0];
System.out.println(m.getName()); // loginAttempt
Parameter[] parameters = m.getParameters();
for (Parameter parameter : parameters) {
System.out.print(parameter.getName() + " "); // username password
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
69 次 |
| 最近记录: |