写一个ArrayList类的代理,实现和ArrayList中完全相同的功能,并可以计算每个方法运行的时间。 给位大侠 关于代理类不太明白 此题 我一直不知道代码该怎么写。请各位大侠指点 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把你的算法改写,输入参数从数组改成Iterator,之后就可以把Iterator的来源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 ListProxy { public static void main(String[] args) throws Exception { List<String> list = newList(String.class); list.add("abc"); System.out.println(list); } @SuppressWarnings("unchecked") public static <T> List<T> newList(Class<T> elementType) { return (List<T>)Proxy.newProxyInstance(List.class.getClassLoader(), new Class[]{List.class}, new InvocationHandler() { private List<T> realList = new ArrayList<T>(); public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { long start = System.nanoTime(); Object ret = method.invoke(realList, args); long end = System.nanoTime(); System.out.println("调用" + method.getName() + "耗时:" + (end - start) + "纳秒"); return ret; } }); }} java使用itext修改一本pdf字体的颜色。 java web maven项目 路径问题! 代码解释? 求用java给已知msn用户发消息的方法 通过超连接启动qq。。。。。。 求救:spring找不到login.do 感谢大家了! JBOSS + TOMCAT ? 各位谁在TOMCAT中做过连接池??50分请教 小白求教:java中modulepath与classpath区别是什么? s2sh框中的jsp的js中forward方法 关于struts2拦截器功能原理问题?
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 ListProxy {
public static void main(String[] args) throws Exception {
List<String> list = newList(String.class);
list.add("abc");
System.out.println(list);
}
@SuppressWarnings("unchecked")
public static <T> List<T> newList(Class<T> elementType) {
return (List<T>)Proxy.newProxyInstance(List.class.getClassLoader(), new Class[]{List.class}, new InvocationHandler() {
private List<T> realList = new ArrayList<T>();
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
long start = System.nanoTime();
Object ret = method.invoke(realList, args);
long end = System.nanoTime();
System.out.println("调用" + method.getName() + "耗时:" + (end - start) + "纳秒");
return ret;
}
});
}
}