小码问答,有问必答!

Java能否通过反射获取方法的参数名字?不是用用Spring 的 ParameterNameDiscoverer

JavaEE

收藏

1个回答

我要回答

  • author
    牛叔叔 2019-11-14 13:03

    jdk1.8之前java文件编译成class文件时并不会将参数名字也一起编译进去,而是以arg0,arg1这种模糊名字来替代。想要获取参数名字只能通过ASM、javassist等外部方法来实现。


    Java编译时执行了javac -parameters命令,加上-parameters 就会把参数名也编译进去。之后就可以通过反射取出来了。


    默认我们在Eclipse中编译时没有加这个-parameters 参数,所以即使用了jdk8也无法取出参数名。


    eclipse可以通过配置来改变编译结果。

    微信图片_20191114125736.jpg