public class Test3 {
public static void main(String[] args) throws Exception{
//创建一个代理类的实例对象
List proxy = (List)Proxy.newProxyInstance(
List.class.getClassLoader(), //代理类所使用的类加载器
new Class[]{List.class}, //代理类所实现的接口类字符码
new InvocationHandler() { //匿名内部类主要用于为代理类指代一个目标类的实际包装方法
//目标对象
List target = new ArrayList();
@Override
//对目标类所有方法包装新的功能
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
//开始时间
//long startTime = System.currentTimeMillis();
//毫秒不管用CPU太快,我上毫微秒
long startTime = System.nanoTime();
//利用反射调用目标类同名方法
Object val = method.invoke(target, args);
//结束时间
//long endTime = System.currentTimeMillis();
long endTime = System.nanoTime() - startTime;
//打印方法名与运行时间
System.out.println(method.getName() + "方法运行时间:" + (endTime) + "毫微秒!");
return val;
}
});
proxy.add("java");
proxy.isEmpty();
proxy.toArray();
proxy.clear();
proxy.size();
}
}
代理类
最新推荐文章于 2022-10-24 22:53:19 发布