method与invoke(均为个人理解,欢迎指正)

首先,利用反射创建类的Class对象;再通过类的Class对象,创建类的对象,说明,getName与setName都是User中的方法,即

        //反射方法获得Class对象
        Class c1 = Class.forName("reflection.User");
        //反射方法创建对象,类似于new 
        User user3 =(User) c1.newInstance();

method:获取指定的方法,此方法为获取类Class对象中,指定名字的方法,并对其进行包装,由于是通过反射来进行获取,所以,参数类型需要同为Class对象

        //第一个参数为方法的名称,后面接 方法的参数,
        Method getName = c1.getMethod("getName",null);
        Method setName = c1.getMethod("setName", String.class);

invoke:激活的意思,这个方法可以激活Method包装好的方法,返回的是Object对象,里面的属性,第一个是含有Method包装的方法的类,第二个参数是执行这个方法时,向里面进行传递的参数。简单来说,就相当于执行了 user3.setName(String name) 这段代码

        //invoke :激活的意思
        //(对象,"方法的值")
        setName.invoke(user3,"学习");
        System.out.println(user3.getName());

在动态代理和框架中,这两个常常搭配使用,在动态代理中,invoke第二个参数是一个Object数组,理解为向里面可以放入任意个值,增加动态代理的灵活性。

posted @ 2022-08-28 23:56  斯雷普尼尔  阅读(226)  评论(0)    收藏  举报