黑马程序员技术交流社区

标题: 代理的疑问 [打印本页]

作者: 冯伟超    时间: 2012-12-19 20:17
标题: 代理的疑问
public class Proxy_day02
{
/**
  * @param args
  * 将代理的硬编码模式改为灵活的调用模式,适应用户的需求
  */
public static void main(String[] args)
{
  final ArrayList target=new ArrayList();
        final MyAdvice  myAdvice=new MyAdvice();
  Collection coll2 = (Collection) getProxy(target,myAdvice);
     
     coll2.add("nihao");
   
     
    System.out.println( coll2.size());
   
}


private static Object getProxy(final Object target,final Advice advice)
{
  Object coll2=Proxy.newProxyInstance(
       target.getClass().getClassLoader(),
       target.getClass().getInterfaces(),//表示target的实现的接口
       new InvocationHandler(){
  
     public Object invoke(Object proxy, Method method,
       Object[] args) throws Throwable
     {
      //long begin=System.currentTimeMillis();//增加的功能
      advice.begin();
      
      Object obj=method.invoke(target,args);
      
      advice.end();
      advice.total(method);
      /*long end=System.currentTimeMillis();//增加的功能
      
      System.out.println(method.getName()+"::"+(end-begin)+" ");*/
      
      return obj;
     }}
       );
  return coll2;
}

}

       target.getClass().getClassLoader(),这个地方使用的接口的字节码加载器,这个地方是接口的加载器, 可是target.getClass()得到的不是接口啊,求详解?

       target.getClass().getInterfaces(),这个地方接收的是接口字节码的数组,但是看了视频老师却这样写不太明白?






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