反射获取方法的形参名称为arg,并不是真实名称,jdk8、IDEA2021

问题描述:

通过反射获取 类的方法 形参的真实名称。

但 输出结果为 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 比较。

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值