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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 施大勇 于 2013-9-28 15:37 编辑
  1. public static Object getProxy(final Object obj, final Advice adv) {//参数为动态代理的类对象及额外的内容。
  2.   Object proxy = Proxy.newProxyInstance(obj.getClass().getClassLoader(),
  3.     obj.getClass().getInterfaces(),
  4.     new InvocationHandler() {
  5.      @Override
  6.      public Object invoke(Object proxy, Method method,
  7.        Object[] args) throws Throwable {
  8.       //invoke()方法三个参数的意义,proxy - 在其上调用方法的代理实例,
  9.      //它指的是被代理的类的实例吗?如果是就与方法中传入的final Object obj指的是同一对象。????????????
  10.       // System.out.println("+++++++++++++++++++++++++++++++++++");
  11.       adv.before(method);
  12.       Object ob = method.invoke(obj, args);
  13.       // System.out.println("-----------------------------------");
  14.       adv.after(method);
  15.       return ob;
  16.      }
  17.     });
  18.   return proxy;
  19. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
潘才新 + 1 淡定

查看全部评分

3 个回复

倒序浏览
invoke方法中:
public Object invoke(Object proxy, Method method,Object[] args)
proxy:代表代理类的实例
method:代表代理实例上调用的接口方法的实例
args:调用的方法需要传的参数

Object ob = method.invoke(obj, args);
这句代码,obj代表的是目标类的实例,obj跟proxy是不一样的

评分

参与人数 1技术分 +1 收起 理由
潘才新 + 1

查看全部评分

回复 使用道具 举报
第一印象 发表于 2013-9-13 16:56
invoke方法中:
public Object invoke(Object proxy, Method method,Object[] args)
proxy:代表代理类的实 ...

PROXY是代理类的实例,OBJ是被代理类的实例.可以这样认为吗?
A类是一个真实存在的类,有一个动态代理类B,那么PROXY是B的实例,而OBJ是A的实例,是这样吧.
回复 使用道具 举报
施大勇 发表于 2013-9-14 15:36
PROXY是代理类的实例,OBJ是被代理类的实例.可以这样认为吗?
A类是一个真实存在的类,有一个动态代理类B,那 ...

是的,我也是这么理解的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马