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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 高丽华 中级黑马   /  2014-1-19 10:16  /  1451 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

刚才我看有的面试完的学哥学姐们发表的一个问题我也没有搞明白,大家能不能给我一个详细的答案,我再此谢谢了!!{:soso_e100:}
问题就是动态代理与代理的区别?

评分

参与人数 1技术分 +1 收起 理由
黄晓鑫 + 1

查看全部评分

7 个回复

倒序浏览
为什么没有人回答我的问题??太难了???
回复 使用道具 举报
其实动态代理也是代理的一种,代理分为静态代理和动态代理。
静态代理类: 由程序员创建源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。
动态代理类: 动态代理类的字节码在程序运行时由Java反射机制动态生成,无需程序员手工编写它的源代码。
为什么会出现动态类?
因为要为系统中的各种接口的类增加代理功能,那将需要太多的代理类,全部采用静态代理的方式,写成千上万的代理将是一件非常复杂的事情,所以出现了动态代理,可以很容易的生成代理。
生成动态代理的方法:
1.Jvm可以在运行期动态的生成类的字节码,这种动态的生成的类往往被用作代理类,即动态代理类
2.JVM生成的动态类必须实现一个或多个接口,所以JVM生成的动态类只能用作具有相同接口的目标类的代理。
3.CGLIB库可以动态生成一个类的子类,一个类的子类也可以用作该类的代理。所以可以用CGLIB库为一个没有实现接口的类生成动态代理。

评分

参与人数 1技术分 +1 黑马币 +5 收起 理由
黄晓鑫 + 1 + 5

查看全部评分

回复 使用道具 举报
宋星 发表于 2014-1-19 16:17
其实动态代理也是代理的一种,代理分为静态代理和动态代理。
静态代理类: 由程序员创建源代码,再对其编译 ...

谢谢你太好了!!
回复 使用道具 举报
呵呵,不用客气,我想请你帮一下忙,我现在需要技术分,可以给我加一分么
回复 使用道具 举报
宋星 发表于 2014-1-19 16:24
呵呵,不用客气,我想请你帮一下忙,我现在需要技术分,可以给我加一分么 ...

我只能给你金币  你就等版主给你加分吧!!嘻嘻嘻
回复 使用道具 举报
宋星 中级黑马 2014-1-19 16:28:55
7#
嘿嘿,不是回答问题就有分吗,为什么没有咧?
回复 使用道具 举报 1 0
宋星 发表于 2014-1-19 16:28
嘿嘿,不是回答问题就有分吗,为什么没有咧?

因为我不是版主,呵呵呵:)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马