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数组,理解为向里面可以放入任意个值,增加动态代理的灵活性。

浙公网安备 33010602011771号