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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 发哥-阿花 中级黑马   /  2013-11-24 10:24  /  1419 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 发哥-阿花 于 2013-11-24 11:33 编辑


如下代码,proxy3是创建的代理类实例对象吧?各位有没有浅显易懂的话来讲解一下下面这段代码,不是很理解。如果是我前面的的知识点遗漏的话,望批评指出。
  1. Collection proxy3 = (Collection)Proxy.newProxyInstance(//创建代理类实例对象
  2. Collection.class.getClassLoader(),
  3. new Class[] {Collection.class},
  4. new InvocationHandler(){
  5. public Object invoke(Object arg0, Method method, Object[] arg2)
  6. throws Throwable {

  7. ArrayList target = new ArrayList();//这个集合是传到下面是做什么用的,
  8. Object retVal = method.invoke(target,arg2);//这里的method方法是获取哪个类或接口的?是Collection的么?

  9. return retVal;
  10. }

  11. });
复制代码
最近几天烦事特多,看动态代理时就看一段停一段,有时接不上啊。

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

2 个回复

倒序浏览
这,,没人来么?不过我上面遇到的不是讲过的我没掌握,而是还没讲到我就在思考了,,,后面视频一看就懂了。27期的骚年们都没来了啊,28的也还没来。看来只能自己多看两遍了
回复 使用道具 举报
1.代理的实例对象prox3 = (Collection)Proxy.newProxyInstance;得到该对象的代理实例方法
2.方法第一个参数是类加载器02.Collection.class.getClassLoader(),
3.方法第二个参数接口数组new Class[] {Collection.class},//动态类是个集合
4-14.方法第三个参数handler对象
new InvocationHandler(){//实现InvocationHandler接口的匿名内部类
public Object invoke(Object arg0, Method method, Object[] arg2)
throws Throwable {
ArrayList target = new ArrayList();//指定目标类是ArrayList
Object retVal = method.invoke(target,arg2);
return retVal;
}
});
这样做的好处是可以用prox3调用ArrayList集合的各种方法了。


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