问题描述:
通过反射获取 类的方法 形参的真实名称。
但 输出结果为 arg0、arg1、arg2。并不是 真实名称。
问题代码:
public class reflect {
public static void main(String[] args) throws Exception {
String a = "say";
Class clazz = Class.forName("com.atguigu.servlet.Person");// 获取运行时类
Object o = clazz.newInstance();// 将类实例化
Method declaredMethod = o.getClass().getDeclaredMethod(a,String.class,Integer.class,String[].class);// 获取其内部方法
declaredMethod.setAccessible(true);
// System.out.println(declaredMethod);
Parameter[] parameters = declaredMethod.getParameters();
for (Parameter parameter : parameters) {
// System.out.println(parameter);
System.out.println(parameter.getName());
System.out.println("name".equals(parameter.getName()));
}
}
}
class Person {
public void say(String name ,Integer id,String[] songs) {
System.out.println("name = " + name);
System.out.println("id = " + id);
System.out.println("songs = " + Arrays.toString(songs));
}
public void bye() {
System.out.println("im a good boy");
}
}
解决方法:
进入setting ,修改如下:
在附加命令函参数中 添加 -parameters
测试成功:
如下图所示 : 得到的name 还可以用于 equals 比较。