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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhaodecang 中级黑马   /  2016-7-15 14:18  /  451 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

写一个ArrayList类的代理,实现和ArrayList中完全相同的功能,并可以计算每个方法运行的时间。
  1. import java.lang.reflect.InvocationHandler;
  2. import java.lang.reflect.Method;
  3. import java.lang.reflect.Proxy;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6. public class test1 {
  7.      public static void main(String [] args){
  8.         final ArrayList target = new ArrayList();
  9.         List list_Proxy = (List)Proxy.newProxyInstance(List.class.getClassLoader(),
  10.                ArrayList.class.getInterfaces(),new InvocationHandler() {
  11.                     @Override
  12.                     public Object invoke(Object proxy, Method method,Object [] args) throws Throwable {
  13.                            long beginTime = System.currentTimeMillis();
  14.                            Thread.sleep(10);
  15.                            Object reVal = method.invoke(target, args);
  16.                            long endTime = System.currentTimeMillis();
  17.                            System.out.println(method.getName()+ " runing time is " + (endTime - beginTime));
  18.                            return reVal;
  19.                     }
  20.              });
  21.        list_Proxy.add("element1");
  22.        list_Proxy.add("element2");
  23.        list_Proxy.add("element3");
  24.        list_Proxy.remove("element4");
  25.        System.out.println(list_Proxy.toString());
  26.      }
  27. }
复制代码

0 个回复

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