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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马振鹏 中级黑马   /  2012-7-7 21:16  /  1232 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 啸傲江湖007 于 2012-7-7 22:13 编辑

Collection proxy3 =(Collection) Proxy.newProxyInstance(
    Collection.class.getClassLoader(),
       new Class [] {Collection.class},
       new InvocationHandler(){
        
        public Object invoke(Object proxy, Method method, Object[] args)
          throws Throwable {
         //怎么理解target
         ArrayList target = new ArrayList();
         long beginTime = System.currentTimeMillis();
         Object retVal = method.invoke(target, args);
         long endTime = System.currentTimeMillis();
         System.out.println(method.getName()+" running time " +(endTime-beginTime));
         return retVal;
        }
        
       }
       );

定义的 ArrayList target = new ArrayList();
应该怎么理解?

3 个回复

倒序浏览
这里的 target 就是被代理的类

Object retVal = method.invoke(target, args);

通过放射的方法来调用 taeget 的 方法。
回复 使用道具 举报
target是指被代理的那个对象
这里看是不好理解
你继续看视频,会说到这个target应该放在外面

每次调用代理类的方法
就会在被代理类的方法运行前后执行你的那些代码

Object retVal = method.invoke(target, args);
就是指被代理类的原方法被调用
invoke中的那个target就是被代理的那个对象了

评分

参与人数 2技术分 +1 黑马币 +5 收起 理由
黑马张扬 + 1
黑马振鹏 + 5

查看全部评分

回复 使用道具 举报
温少邦 发表于 2012-7-7 22:06
target是指被代理的那个对象
这里看是不好理解
你继续看视频,会说到这个target应该放在外面

恩 看到了 又往下两个视频看到了 呵呵 谢啦兄弟
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马