黑马程序员技术交流社区

标题: 分享一个动态代理的代码 [打印本页]

作者: 周博文    时间: 2015-8-16 14:00
标题: 分享一个动态代理的代码
  1. import java.lang.reflect.InvocationHandler;
  2. import java.lang.reflect.Method;
  3. import java.lang.reflect.Proxy;
  4. import java.util.ArrayList;
  5. import java.util.List;

  6. public class ProxyDemo {

  7.         public static void main(String[] args) {
  8.                 //创建实际对象
  9.                 final List list = new ArrayList();
  10.                 //创建代理对象对list接口做代理
  11.                 /*
  12.                  * newProxyInstance参数的含义:
  13.                  * ClassLoader : 通过要代理的类的Class对象获取类加载器,以便于代理类获取实际类的内部结构
  14.                  * Interface[] : 获取代理类的所有接口
  15.                  * InvocationHandler : 通过调用处理器接口调用接口的方法。
  16.                  */
  17.                 List proxy = (List) Proxy.newProxyInstance(list.getClass()
  18.                                 .getClassLoader(), list.getClass().getInterfaces(),
  19.                                 new InvocationHandler() {
  20.                                        
  21.                                         @Override
  22.                                         public Object invoke(Object proxy, Method method,
  23.                                                         Object[] args) throws Throwable {
  24.                                                 Object obj = method.invoke(list, args);
  25.                                                 return obj;
  26.                                         }
  27.                                 });
  28.                
  29.                 proxy.add("I love Java.");
  30.                 proxy.add(34);
  31.                
  32.                 System.out.println(proxy);
  33.         }
  34. }
复制代码







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2