java吧 关注:1,253,081贴子:12,741,870
  • 6回复贴,共1

新手不懂,谁帮我注释一下,谢谢。就知道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 Test3 {
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;
}
});
}
}


1楼2014-04-06 18:16回复
    你这是在实现动态代理。
    好NB,可以带我装逼带我飞吗?


    IP属地:山东2楼2014-04-06 18:23
    回复