package 动态代理扩展List;
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 ListPro {
public static void main(String[] args) {
final List<Object> list = new ArrayList<Object>();
// 对list代理
Object lis = Proxy.newProxyInstance(ListPro.class.getClassLoader(),
new Class[] { List.class }, new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
// 显示参数
if (method.getName().equals("add")) {
System.err.println("参数" + args[0]);
}
// diaoyong
return method.invoke(list, args);
}
});
// 转换
List<Object> l = (List<Object>) lis;
l.add("kk");
System.err.println("size:" + l.size() + "," + list.size());
System.err.println("-----------");
list.add("xx");
System.err.println("size2:" + l.size() + "," + list.size());
System.err.println("========");
for (Object ls : l) {
System.err.println(ls);
}
}
}