黑马程序员技术交流社区

标题: 动态代理问题! [打印本页]

作者: 高庆亮    时间: 2011-11-21 18:12
标题: 动态代理问题!
本帖最后由 高庆亮 于 2011-11-22 14:53 编辑

Class clazzProxy1 = Proxy.getProxyClass(Collection.class.getClassLoader(), Collection.class);
这句话的意思是 动态获得代理Collection类的字节码么?如果是的话,它和正常的反射获得Collection类的字节码有什么区别?为什么还需要个类加载器。
作者: ZHB    时间: 2011-11-21 18:51
兄弟,帮你顶贴!!!!!!!
作者: 罗亚东    时间: 2011-11-21 19:19
因为getProxyClass返回代理类的 java.lang.Class 对象,并向其提供类加载器和接口数组。该代理类将由指定的类加载器定义,并将实现提供的所有接口。它接受两个参数:loader - 定义代理类的类加载器i,nterfaces - 代理类要实现的接口列表。interfaces 数组中的所有 Class 对象必须表示接口,而不能表示类或基本类型。因为接受的是Class对象,所以要获得接口的字节码,和正常的反射获得字节码没有区别。还有,给你纠正一下,这里的Collection是接口,不是类。

作者: 李龙龙    时间: 2011-11-22 02:03
建立动态代理类
Class clazz =Proxy.getProxyClass(ProxyTest.class.getClassLoader(),ProxyTest.class());
然后建立构造函数,方法,并实例化。
           1 要为已存在的多个具有相同接口的目标类的各个方法增加一些系统功能
        2 编写一个与目标类具有相同接口的代理类,代理类的每个方法调用目标类的相同
         方法,并在调用方法时加上系统功能的代码
        3 如果采用工厂模式和配置文件的方式进行管理,则不需要改写客户端程序,在配置文件中
          配置是使用目标类,还是代理类,这样以后很容易切换

作者: 高庆亮    时间: 2011-11-22 14:55
李龙龙 发表于 2011-11-22 02:03
建立动态代理类
Class clazz =Proxy.getProxyClass(ProxyTest.class.getClassLoader(),ProxyTest.class()); ...

谢谢 懂了、




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