黑马程序员技术交流社区

标题: 动态代理的疑惑求解 [打印本页]

作者: 刘士林    时间: 2012-11-6 23:20
标题: 动态代理的疑惑求解
看视频中讲解动态代理部分,很茫然。
在视频中张老师创建了一个动态类,是用Proxy类创建的,但是创建的对象类型却是Collection类型的,
其后,张老师又调用了add(),clear()方法,但老师却说到目前为止还没有为动态类指定目标,既然没指定目标,怎么就能用
目标具有的add,clear()方法呢?目标怎么和代理联系起来的,也没看出来有什么绑定关系啊,用的add(),clear()方法是Collection的还是ArrayList的呢?很费解,求助?望高手指点.
作者: 陈冲    时间: 2012-11-6 23:40
视频里面的代理类是要代理一个ArrayList,所以代理返回的对象是可以进行强转的,
而ArrayList又实现了Collection,如果你前面看过多态的话,应该知道这么定义是没有问题的。
至于你说的目标,
在Proxy.newInstance(ClassLoader loader,Class<?>[] interfaces,InvocationHandler h)中的第二个参数就是指定需要代理的目标(这里是ArrayList,ArrayList.getClass().getClassLoader)
而Collection总有add()和clear()方法,所以这里使用这两个方法没有错。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2