黑马程序员技术交流社区

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

作者: 郭军亮    时间: 2013-5-29 21:13
标题: 动态代理
  1. ArrayList listproxy= (ArrayList) constructor.newInstance(new InvocationHandler(){      
  2.                                         @Override
  3.                                         public Object invoke(Object proxy, Method method,
  4.                                                         Object[] args) throws Throwable {
  5.                                                 // TODO Auto-generated method stub
  6.                                                 long starttime = System.currentTimeMillis();
  7.                                                 Object revalue = method.invoke(target, args);
  8.                                                 long endtime = System.currentTimeMillis();
  9.                                                 System.out.println("方法:" + method.getName() + "一共用时"
  10.                                                                            + (endtime - starttime));
  11.                                                 return revalue;
  12.                                         }
  13.                                 });
复制代码
为什么老是报告类型转换异常啊,把ArrayList换成Collection就能正常执行呢
   

作者: First    时间: 2013-5-30 01:59
楼主请认真看下api

getProxyClass(ClassLoader loader, Class<?>... interfaces)
          返回代理类的 java.lang.Class 对象,并向其提供类加载器和接口数组。

api中 明确 声明 第二个参数是接口数组,也就是说 该例子接收的是Collection 接口,不是ArrayList,
也就是说该代理不具备ArrayList 特有的方法,因此不可转换,只能是Collection




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