java动态代理(下)

好的,接下来我们接着上一篇博客接着继续给大家介绍java动态代理技术,上一篇博客的结尾我们讲到我们要用自己的模拟的Proxy类来实现跟JDK的Proxy类差不多的功能,即返回一个代理类。以下内容需要读者有一定java反射基础,如不了解,可先去看下我的另外一篇博文:java反射技术

我们首先分析下,JDK的Proxy类的newProxyInstance接收三个参数,第一个是ClassLoader,我们为了简单起见,省去这个参数,ClassLoader的具体作用读者感兴趣可上网了解,第二个参数是被代理类实现的接口列表,我们为简单起见,默认被代理类只实现一个接口。

先简单说下JDK的Proxy类干了什么,然后再模拟它,它接收了被代理类实现的接口列表目的是创造一个同样实现这些接口的代理类,这样他就能反射出这些接口中的方法,也就是他可以得到被代理类中的方法列表,然后它还接收一个InvocationHandler的实现类h,在反射出的每一个方法中,会调用h的invoke方法,在h的invoke方法中,先加入自己的逻辑,然后再调用被代理类中的同样方法(注意,h中持有一个被代理对象),将所有的方法反射完成之后,动态编译这个代理类,返回一个代理类的对象。然后我们在外面就可以直接拿接口类型的引用接收这个对象,当调用这个代理类的方法的时候,我们自己加的逻辑自然也就加进去了。

上面只是说的是基本原理,当然JDK的Proxy类在实际执行过程中远比以上描述要复杂,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值