反射调用方法的使用

本文详细介绍了如何使用Java反射API访问并调用私有方法,通过`getDeclaredMethod`获取方法实例,然后设置方法可访问并使用`invoke`执行。展示了在User类中使用`show`方法的实例,包括实例化对象、设置方法权限和实际调用过程。
摘要由CSDN通过智能技术生成
 @Test
    public void methodtest() throws IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException {
        Class<User> userClass = User.class;

        User user = userClass.newInstance();
        //设置调用方法名和重载方法的形参类型
        Method show = userClass.getDeclaredMethod("show", String.class);
        //调用private修饰需要设置权限
        show.setAccessible(true);
        //invoke调用方法,设置对象和形参,invoke接收的返回值即为show方法的返回值
        Object invoke = show.invoke(user, "小明");

        System.out.println(invoke);

        System.out.println("**************************************");

        Method staticmethod = userClass.getDeclaredMethod("staticmethod");

        staticmethod.setAccessible(true);
        //一下三个都可以因为静态方法不需要对象来指明,所以也可以写null
        Object invoke1 = staticmethod.invoke(User.class);

        Object invoke2 = staticmethod.invoke(user);

        Object invoke3 = staticmethod.invoke(null);


    }
}
//user中的方法截取
    private String show(String name){
        System.out.println("my name is"+name);
        return name;
    }
    private int show(int age){
        System.out.println("my year old is"+age);
        return age;
    }

    private static void staticmethod(){
        System.out.println("此方法为静态方法且没有返回值");
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值