前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >可以让反射获取到方法参数实际的变量名设置

可以让反射获取到方法参数实际的变量名设置

作者头像
码农UP2U
发布2022-03-29 09:04:33
1.2K0
发布2022-03-29 09:04:33
举报
文章被收录于专栏:码农UP2U

反射在项目中会经常被用到,比如优化项目结构,比如解析协议格式等。在使用反射时,经常会用来调用某个对象的方法,通过反射来调用对象中的方法时,也需要给方法的参数进行赋值。当方法的参数来自于外部输入时,在反射中就可能需要拿到方法的参数名称。默认情况下通过反射获得的方法参数名为 arg0、arg1 (也有可能是 var1 和 var2)这样的,那么就无法对方法进行传参了。

比如,当我们输入的 URI 为 pwd=1234567&name=zhangsan,而 Controller 中的 login 方法的参数为 String name, String pwd 时,通过反射给调用 login 方法时,就需要明确知道 login 的两个参数名了。通过参数名 name 可以得到 uri 中 name 的值(类似 request.getParameter("name")这样的代码),通过参数 pwd 可以得到 uri 中 pwd 的值。如果反射获取到的参数名是 arg0、arg1、var1、var2 这样的话,就无法得到 URI 传递来的值了。

因此,本文就简单说说如何让反射获取到方法参数实际的变量名的设置方法吧。

IDEA 的设置方法

在 JDK 1.8 提供了 -parameters 参数,它会将 Java 代码中的方法的参数名写入到 .class 文件中。具体在 IDEA 中的设置方法为:File -> Settings -> Build -> Compiler -> Java Compiler,具体如下图:

然后,在 Additional command line parameters: 中设置即可。

-parameters 的作用是:生成元数据以用于方法参数的反射。这个解释是 javac 命令给出的解释。

Maven 的设置方法

当项目使用 Maven 构建时,需要通过 Maven 的插件来进行设置,Maven 的配置如下所示:

代码语言:javascript
复制
  <build>
      <plugins>
          <plugin>
              <artifactId>maven-compiler-plugin</artifactId>
              <version>3.8.0</version>
              <configuration>
                  <source>1.8</source>
                  <target>1.8</target>
                  <encoding>utf8</encoding>
                  <compilerArgs>
                      <arg>-parameters</arg>
                  </compilerArgs>
              </configuration>
          </plugin>
      </plugins>
  </build>

上面就是”可以让反射获取到方法参数实际的变量名“设置的方法。从上面的 XML 来看,其实还是使用了 -parameters 的编译参数,只是指定的方式有所不同而已。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农UP2U 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • IDEA 的设置方法
  • Maven 的设置方法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档