黑马程序员技术交流社区

标题: 有关代理类的问题 [打印本页]

作者: wuhyoung    时间: 2014-5-27 09:52
标题: 有关代理类的问题

复制代码
  1. Proxy.newProxyInstance
复制代码

在使用代理类的时候,一定会向实例化代理类的创建史添加上面的代码
  1. Proxy.newProxyInstance
复制代码


invoke函数体里面包含三个参数,第一个参数是Object,但是我看了这么多视频,都没有看到过Object用在哪里或者它是由哪里传进来的参数。
求大神解释一下invoke里面的第一个参数Object是哪里传进来的。



作者: wuhyoung    时间: 2014-5-27 09:55
刚才代码没粘过来。
  1.         new InvocationHandler() {
  2.                         @Override
  3.                         public Object invoke(Object proxy, Method method, Object[] args)
  4.                                         throws Throwable {

  5.                                 advice.out();
  6.                                 Object retVal = method.invoke(target, args);
  7.                                 return retVal;
  8.                         }
  9.                 });
复制代码

就是public Object invoke(Object proxy, Method method, Object[] args) 里面的Object第一个参数

作者: yuZhe_toString    时间: 2014-5-27 12:11
你可以跟代码,看看源码是怎么实现的。
作者: 田富丰    时间: 2014-5-27 17:54
LZ你要仔细看看视频了!!张老师都说的很清楚了!!那个Object是你的那个代理对象
就比如张老师里面的例子!!用的是代理Collection!创建的是一个Collection代理对象!
那个Object就是这个代理对象!!
如: 创建Collection的代理对象为: proxy,调用Collection中的add方法,添加一个字符b
proxy.add("b");   
这个是代理里的方法public Object invoke(Object proxy, Method method, Object[] args)
proxy = Object proxy这个参数
add = Method method,这个参数
"b"  = Object[] args这个参数
在张老师视频有原代码,可以看看!!






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