黑马程序员技术交流社区

标题: /写一个ArrayList类的代理,实现和ArrayList类中完全相同的功能 [打印本页]

作者: 编程小黑    时间: 2015-7-30 22:45
标题: /写一个ArrayList类的代理,实现和ArrayList类中完全相同的功能
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.ArrayList;
import java.util.List;

public class Test23 {
//写一个ArrayList类的代理,实现和ArrayList类中完全相同的功能,并可以计算每个方法运行的时间。

        public static void main(String[] args) {
                // TODO Auto-generated method stub

                final ArrayList<?> tager = new ArrayList();
                List proxy =(List)Proxy.newProxyInstance(
                                List.class.getClassLoader(),
                                ArrayList.class.getInterfaces(),
                                new InvocationHandler() {
                                       
                                        @Override
                                        public Object invoke(Object proxy, Method method, Object[] args)
                                                        throws Throwable {
                                                long beginTime = System.currentTimeMillis();
                                                Thread.sleep(10);
                                                Object reVal = method.invoke(tager, args);
                                                long endTime = System.currentTimeMillis();
                                                System.out.println(method.getName()+"运行了"+(endTime-beginTime));
                                                return reVal;
                                        }
                                });
                proxy.add("黑马程序员");
                proxy.add("你好");
                proxy.remove("你好");
                System.out.println(proxy.toString());
        }

}





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