黑马程序员技术交流社区

标题: 关于动态代理的问题 [打印本页]

作者: 徐启坤    时间: 2013-6-8 20:18
标题: 关于动态代理的问题
本帖最后由 徐启坤 于 2013-6-8 21:15 编辑

张老师的这段代码中有两点不明白,见代码

private static Object getProxy(final Object target,final Advice advice) {                //为什么这里的参数要用final修饰?
        Object proxy3 = Proxy.newProxyInstance(
                target.getClass().getClassLoader(),
                /*new Class[]{Collection.class},*/                           //这里应该是要接受数组形式的参数
                target.getClass().getInterfaces(),                            //为什么这里却没用数组??
                new InvocationHandler(){
               
                    public Object invoke(Object proxy, Method method, Object[] args)
                            throws Throwable {

                        /*long beginTime = System.currentTimeMillis();
                        Object retVal = method.invoke(target, args);
                         long endTime = System.currentTimeMillis();
                        System.out.println(method.getName() + " running time of " + (endTime - beginTime));
                        return retVal;*/
                        

                        advice.beforeMethod(method);
                        Object retVal = method.invoke(target, args);
                        advice.afterMethod(method);
                        return retVal;                        
                        
                    }
                }
                );
        return proxy3;
    }



作者: 黑马伍哲沂    时间: 2013-6-8 21:03
加final是因为内部类访问外部局部变量。

另外,参数本来就是数组。因为getInterfaces()返回的是一个数组。
作者: 徐启坤    时间: 2013-6-8 21:10
本帖最后由 徐启坤 于 2013-6-8 21:15 编辑
黑马伍哲沂 发表于 2013-6-8 21:03
加final是因为内部类访问外部局部变量。

另外,参数本来就是数组。因为getInterfaces()返回的是一个数组。 ...

哦看来好几遍都没有发现,原来是用了getInterfaces(),我还以为只返回一个接口来




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