Java 参数名自动发现
如何动态获取java参数名
java 8
Java 8中可以在编译时添加参数javac -parameters,再通过reflection获取
1 | public class Boundary { |
编译时加了参数javac -parameters 时输出如下:
1 | hello(java.lang.String name int age ) |
没有加参数-parameters 时输出结果如下:
1 | hello(java.lang.String arg0 int arg1 ) |
ASM + 编译时加上调试信息
Java8以前编译时加上debug info via javac -g option
没有加-g选项时只有源文件和行号调试信息;加了-g选项后会包括本地变量调试信息(LocalVariableTable),比如变量名。
再通过Spring LocalVariableTableParameterNameDiscoverer获取
- source: Source file debugging information.
- lines: Line number debugging information.
- vars: Local variable debugging information.
使用场景
- @PathVariable
- @RequestParam
- @RequestHeade
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 石头记!