跟王老师学反射(六):使用反射调用方法

发布时间:2020-03-19 18:13:02 作者:编程魔法师
来源:网络 阅读:293

学习内容

使用反射调用方法


当获得某个类对应的Class对象后,就可以通过该Class对象的getMethods()方法或getMethod()方法来获取全部方法或指定方法,这二个方法的返回值是Method对象数组,或者Method对象。

一、public Object invoke(Object obj,  Object... args)

获得Method对象后,程序就可以通过该Method来调用对应的方法,在Method里包含一个invoke方法。

该方法中的obj是执行该方法的对象,后面的args是执行该方法时传入该方法的参数

使用参数 args 在 obj 上指派该对象所表示方法的结果 

二、调用方法例子

1
2
3
4
5
6
7
8
9
10
public static void test4()throws Exception{
        Class<Person> personClass = Person.class;
        Person person = personClass.newInstance();
        //得到setName方法
        Method method = personClass.getMethod("setName", String.class);
        //调用setName,为name赋值
        Object object = method.invoke(person, "wangwu");
        System.out.println(person);
        System.out.println(object);
    }

三、注意事项

当通过Method的invoke方法来调用对应的方法时,Java会要求程序必须有调用该方法的权限,如果 程序确实需要调用某个对象的private方法,可以先调用Method对象的如下方法

1
2
3
private void setName(String name) {
        this.name = name;
    }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static void test5()throws Exception{
        Class<Person> personClass = Person.class;
        Person person = personClass.newInstance();
        //得到setName方法
        Method method = personClass.getDeclaredMethod("setName", String.class);
        //调用访问权限检查
        if(!method.isAccessible()){
            method.setAccessible(true);
        }
        //调用setName,为name赋值
        Object object = method.invoke(person, "wangwu");
        System.out.println(person);
        System.out.println(object);
    }
推荐阅读:
  1. java 反射-反射对象的获取
  2. 跟王老师学反射(七)使用反射调用属性

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

center blank telephone

上一篇:非关系数据库------MongoDB的安装与使用

下一篇:【音视频】Android CallLib 开发指南

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》