Java通过反射获取方法的参数名 idea的设置

之前阿里面试的时候,面试官问我Java通过反射可以获取到一个方法的形参名称吗?

听到这个问题我是懵逼的,之前只知道通过反射可以获取方法名,形参的类型,但是从来没有注意可不可以获取方法形参的名称。在网上查了一些资料之后,知道在jdk1.7之前获取方法中形参的名称的是打印arg0类型。但是在jdk1.8之后,已经做了改动。可以获取到形参的名称。

注意本文的JDK是基于1.8的。1.8版本以下的博主并没有做过测试。

第一步:通过设置 File-->Settings-->Build,Execution,Deployment-->Compiler-->Java Compiler中设置 Addition command paraters:为 -parameters 。

第二步:Build-->Rebuild Project重新build一下project就好了。

Java通过反射获取方法的参数名 idea的设置_第1张图片

Java通过反射获取方法的参数名 idea的设置_第2张图片

 

下面写上我们的测试用例:

Java通过反射获取方法的参数名 idea的设置_第3张图片

想获取类的Class对象,通过该Class对象的getMethods方法获取类中的公有方法(注意代码中定义的getMethods方法获取不到类中定义的私有方法)。然后遍历类中定义的公有方法,取出方法中的参数。在控制台进行打印。

打印的结果如下:

Java通过反射获取方法的参数名 idea的设置_第4张图片

形参名称 a  形参类型 int

在测试代码中,创建了一个Demo类,并且在类中定义了一个get方法,方法中传入了一个int类型的参数a。可以看到,在Jdk1.8中是可以获取到形参的名称。

你可能感兴趣的:(Java基础)