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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯伟超 中级黑马   /  2012-12-19 20:17  /  911 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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(),这个地方接收的是接口字节码的数组,但是看了视频老师却这样写不太明白?

评分

参与人数 1技术分 +1 收起 理由
崔政 + 1 神马都是浮云

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马