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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wuhyoung 中级黑马   /  2014-5-27 09:52  /  1151 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


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

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


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


3 个回复

倒序浏览
刚才代码没粘过来。
  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第一个参数
回复 使用道具 举报
你可以跟代码,看看源码是怎么实现的。
回复 使用道具 举报
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这个参数
在张老师视频有原代码,可以看看!!

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