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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯敏 黑马帝   /  2011-11-26 13:19  /  2276 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 xiaoyu_min 于 2011-11-26 16:19 编辑

看张老师讲动态代理部分,怎样创建一个代理类,听的有点模糊,帮忙给讲解一下,最好有例子说明

3 个回复

倒序浏览
来个简单点得方法:
  1. public class MyProxy {

  2.         public static void main(String[] args) {
  3.                 List proxy=(List)Proxy.newProxyInstance(
  4.                                 ArrayList.class.getClassLoader(),
  5.                                 new Class[]{List.class},
  6.                                 new InvocationHandler(){
  7.                                         ArrayList array=new ArrayList();
  8.                                         public Object invoke(Object proxy, Method method,
  9.                                                         Object[] args) throws Throwable {
  10.                                                 return method.invoke(array, args);
  11.                                         }
  12.                                 });
  13.                 proxy.add("123");
  14.                 System.out.println(proxy.get(0));
  15.         }

  16. }
复制代码
用这种方式就可以得到ArrayList集合的代理类了,ArrayList集合的各种方法代理中也都有了。
个人理解:用代理的好处就是-可以在方法中加入你自己的代码。

评分

参与人数 1技术分 +2 收起 理由
admin + 2

查看全部评分

回复 使用道具 举报
利用多态来扩展复用代码

本着这个思想,写吧....
回复 使用道具 举报
二楼的示范写得很好,
但实际使用应该不会像二楼的那样写吧,这样写就没扩展性了。还是会另起个代理类接收对象的

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马