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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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());
        }

}

0 个回复

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