黑马程序员技术交流社区
标题: 关于动态代理的疑问。求助! [打印本页]
作者: 廖智 时间: 2012-12-8 22:40
标题: 关于动态代理的疑问。求助!
本帖最后由 廖智 于 2012-12-9 11:30 编辑
package cn.itcasst.p1;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.ArrayList;
import java.util.Collection;
public class ProxyTest2 {
/**
* @param args
* @throws Exception
* @throws NoSuchMethodException
*/
public static void main(String[] args) throws NoSuchMethodException, Exception {
// TODO Auto-generated method stub
Class clazzProxy1 = Proxy.getProxyClass(Collection.class.getClassLoader(),Collection.class);
//创建动态代理的实例。
Collection proxy3 = (Collection)Proxy.newProxyInstance(
Collection.class.getClassLoader(),
new Class[]{Collection.class},
new InvocationHandler(){
ArrayList target = new ArrayList();
@Override
public Object invoke(Object proxy, Method method,Object[] args) throws Throwable {//这里明确的参数分别代表那些,请详细说明?
return method.invoke(target,args); //这里的method代表的是那个method对象?
}
}
);
proxy3.add("zxx");
proxy3.add("lhm");
proxy3.add("bxd");
System.out.println(proxy3);
System.out.println(proxy3.size());
}
}
动态代理看的有点晕,请高手帮忙下,红字部分是问题,谢谢了。
作者: 刘菲 时间: 2012-12-8 23:13
1.public Object invoke(Object proxy, Method method,Object[] args) throws Throwable {//这里明确的参数分别代表那些,请详细说明?
这里的第一个参数是表明是哪个代理对象,
第二个参数是表明调用代理对象的哪个方法,
第三个参数代表调用这个方法时要传递什么参数
2return method.invoke(target,args); //这里的method代表的是那个method对象?
这里的method表明调用目标对象的这个方法
3.以上是个人理解,希望可以帮到楼主
作者: 廖智 时间: 2012-12-8 23:43
刘菲 发表于 2012-12-8 23:13
1.public Object invoke(Object proxy, Method method,Object[] args) throws Throwable {//这里明确的参数 ...
恩,谢谢!开始还感觉很模糊,听你说了,大概知道是什么意思了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |