java怎么获取方法参数名

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java怎么获取方法参数名相关的知识,希望对你有一定的参考价值。

在java中,可以通过反射获取到类、字段、方法签名等相关的信息,像方法名、返回值类型、参数类型、泛型类型参数等,但是不能够获取方法的参数名。在实际开发场景中,有时需要根据方法的参数名做一些操作,比如像spring-mvc中,@RequestParam、@PathVariable注解,如果不指定相应的value属性,默认就是使用方法的参数名做为HTTP请求的参数名,它是怎么做到的呢?
在这样情况下,有两种方法获取方法来解决这种需求,第一种方法是使用注解,在注解中指定对应应的参数名称,在需要使用参数名称时,获取注解中相应的值即可。第二种方法是从字节码中获取方法的参数名,但是这有一个限制,只有在编译时使用了-g或-g:vars参数生成了调试信息,class文件中才会生成方法参数名信息(在本地变量表LocalVariableTable中),而使用-g:none方式编译的class文件中是没有方法参数名信息的。所以要想完全不依赖class文件的编译模式,就不能使用这种方式。
参考技术A 这个东西有点难,试一下用反射看看行不。

JAVA 反射之Method

★ Method没有构造器,只能通过Class获取。

重点方法:

class.getDeclaredMethods():获取所有方法。

class.getDeclaredMethod(String name, Class<?>... parameterTypes):

根据方法名获取方法,name是方法名,parameterTypes是可变参数即方法所需要的参数。

method.invoke(Object obj, Object... args):

调用方法,obj表示调用方法的对象,args是可变参数,表示调用该方法需要传递的参数。

method.getName():获得方法名。

以上是关于java怎么获取方法参数名的主要内容,如果未能解决你的问题,请参考以下文章

java如何获取方法参数名

java 通过反射怎么获取方法中参数值

Java如何获取方法参数中的名称

Java反射机制获取set()方法 并且为set()方法传值

Java8获取参数名及Idea/Eclipse/Maven配置

Spring LocalVariableTableParameterNameDiscoverer获取方法的参数名