A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘士林 中级黑马   /  2012-11-6 23:20  /  1302 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

看视频中讲解动态代理部分,很茫然。
在视频中张老师创建了一个动态类,是用Proxy类创建的,但是创建的对象类型却是Collection类型的,
其后,张老师又调用了add(),clear()方法,但老师却说到目前为止还没有为动态类指定目标,既然没指定目标,怎么就能用
目标具有的add,clear()方法呢?目标怎么和代理联系起来的,也没看出来有什么绑定关系啊,用的add(),clear()方法是Collection的还是ArrayList的呢?很费解,求助?望高手指点.

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

1 个回复

倒序浏览
视频里面的代理类是要代理一个ArrayList,所以代理返回的对象是可以进行强转的,
而ArrayList又实现了Collection,如果你前面看过多态的话,应该知道这么定义是没有问题的。
至于你说的目标,
在Proxy.newInstance(ClassLoader loader,Class<?>[] interfaces,InvocationHandler h)中的第二个参数就是指定需要代理的目标(这里是ArrayList,ArrayList.getClass().getClassLoader)
而Collection总有add()和clear()方法,所以这里使用这两个方法没有错。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马