黑马程序员技术交流社区
标题:
什么是ArrayList的代理
[打印本页]
作者:
黑马张伟
时间:
2011-12-27 09:29
标题:
什么是ArrayList的代理
Arraylist的代理怎么写
作者:
袁泽宇
时间:
2011-12-27 10:06
就是写一个子类继承他 重写ArrayList中的所有方法
作者:
yunqiangshan
时间:
2011-12-27 10:30
//假设做一个ArrayList 的 添加提示的功能。 就是 在调用它的add方法的时候 输出一句 请检查类型.
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.*;
import java.util.*;
class ArrayListProxy implements InvocationHandler...{
Object list ;
ArrayListProxy(Object list )...{
this.list = list;
}
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable...{
if(method.getName().equals("add"))...{
//对特定方法代理
System.out.println ("请检查类型.......befor:"+method.getName());
}
//对所有方法代理
//System.out.println ("请检查类型.......befor:"+method.getName());
Object o = method.invoke(list,args);
return o ;
}
public static Object factory(Object o )...{
Class c = o.getClass();
//用真实的对象来构造代理对象
return Proxy.newProxyInstance(c.getClassLoader(),c.getInterfaces(),new ArrayListProxy(o));
}
}
class TestDProxy...{
public static void main(String[] args)...{
ArrayList al = new ArrayList();
List pro = (List)ArrayListProxy.factory(al);
pro.add("aaa");
System.out.println (pro.size());
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2