A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 周博文 中级黑马   /  2015-8-16 14:00  /  288 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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. }
复制代码


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马