黑马程序员技术交流社区

标题: 动态代理类 [打印本页]

作者: 黑马振鹏    时间: 2012-7-7 21:16
标题: 动态代理类
本帖最后由 啸傲江湖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();
应该怎么理解?

作者: 丁二跃    时间: 2012-7-7 22:02
这里的 target 就是被代理的类

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

通过放射的方法来调用 taeget 的 方法。
作者: 温少邦    时间: 2012-7-7 22:06
target是指被代理的那个对象
这里看是不好理解
你继续看视频,会说到这个target应该放在外面

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

Object retVal = method.invoke(target, args);
就是指被代理类的原方法被调用
invoke中的那个target就是被代理的那个对象了
作者: 黑马振鹏    时间: 2012-7-7 22:12
温少邦 发表于 2012-7-7 22:06
target是指被代理的那个对象
这里看是不好理解
你继续看视频,会说到这个target应该放在外面

恩 看到了 又往下两个视频看到了 呵呵 谢啦兄弟




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