黑马程序员技术交流社区

标题: 什么是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