社区
Java SE
帖子详情
为什么使用动态代理的对象必须实现一个或多个接口
fran_maomao
2015-10-16 04:32:24
初学动态代理,不是很清楚为什么使用动态代理的对象必须实现一个或多个接口?搜了一些解答说实现接口可以定义接口规范,不是很理解,有没有大神可以解释一下~ 谢谢
...全文
1449
3
打赏
收藏
为什么使用动态代理的对象必须实现一个或多个接口
初学动态代理,不是很清楚为什么使用动态代理的对象必须实现一个或多个接口?搜了一些解答说实现接口可以定义接口规范,不是很理解,有没有大神可以解释一下~ 谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wjxtju
2015-10-17
打赏
举报
回复
headfirst 设计模式
http://pan.baidu.com/share/link?shareid=2797796125&uk=839776675&fid=1862987674
第一章12页。
代理是你的类内部组合了其他类,代理了这个其他类的功能。如果要动态,那么你组合的这个类就不能背严格限定。如果不使用接口你在组合的时候必定是这样的语句
ProxyedClass pc;
这限定了你的代理的类为ProxyedClass,不能动态代理多个类。如果抽象出接口。被代理的方法写在接口内部。那么
InterfaceOfProxyedClass pc;语句在实例化的时候可能为ProxyedClass1 ProxyedClass2 ProxyedClass3等等,只要他们实现了InterfaceOfProxyedClass,并且可以通过setter动态切换。
具体看了完整第一章应该就理解了。
dracularking
2015-10-17
打赏
举报
回复
只是jdk的动态代理要求实现接口,cglib没有强制,直接通过继承目标类实现
jsjszg
2015-10-17
打赏
举报
回复
从狭义的实现接口,即implements interface来讲, 单从动态代理本身来讲,没要求实现接口。只是jdk的动态代理机制要求实现接口。虽然cglib是没有要求实现代理,但是也要求继承父类的。本质上是一样的,就是要求有一个超类(或者接口),用来代理目标类。 从广义的实现接口来讲,动态代理就是使用超类代理目标类。
JDK
动态代理
为什么
必须
要基于
接口
本文探讨了JDK
动态代理
的
实现
原理,通过
一个
简单例子展示了
动态代理
的创建过程,包括定义
接口
、
实现
类和代理类的生成。源码分析揭示了在Proxy类中如何动态生成代理
对象
,特别是generateProxyClass()方法的细节。最后,讨论了为什么JDK
动态代理
必须
基于
接口
,原因是Java的单继承特性使得
动态代理
只能通过
实现
接口
来扩展方法。
JDK
动态代理
原理:为什么目标
对象
一定要
实现
接口
?
本文详细阐述了JDK
动态代理
的工作原理,强调了目标
对象
必须
实现
接口
的原因,以及Proxy类在其中的作用——作为工厂,动态生成
实现
接口
的代理
对象
,通过InvocationHandler处理方法调用。,
Java
动态代理
为什么要求
必须
实现
顶级
接口
本文深入解析Java
动态代理
的
实现
原理,探讨为何Java
动态代理
需基于
接口
实现
,而非继承。通过源码解读,揭示代理类生成过程及其
实现
细节。
JDK
动态代理
为什么
必须
要基于
接口
?
本文探讨了JDK
动态代理
为何
必须
基于
接口
实现
,通过源码分析和实战演示,揭示了其背后的设计原理:单继承限制下的方法扩展和InvocationHandler的结合。
JDK
动态代理
为什么需要
接口
?
本文深入探讨了JDK
动态代理
的
实现
原理,解释了为何需要
接口
进行代理,以及如何通过
接口
创建
动态代理
类。通过具体示例展示了
动态代理
在无
实现
类的情况下依然可行,强调了
动态代理
关注的是
接口
而非
实现
类。
Java SE
62,622
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章