JDK动态代理的实现原理

     Jdk的动态代理类Proxy可以实现对一组接口中(a list of interfaces)所有的方法进行代理增强.它的原理是当我们需要对一组接口中所有的方式进行代理时候,新建一个Proxy类,将一个classloader,所需代理的接口数组,作为它的构造方法的两个参数.

     在构造方法中一个名为generateProxyClass()的方法将生成一个新的.class文件的内存副本,所需代理的方法的字节码将会被写入一个最终代表这新的class的字节数组中,最后这个在runtime中被制作出的新的类将以一个Class类的的形式返还.所有的方法的实现都是一致的,那就是调用一个叫InovcationHandler类中的invoke()的函数.通过在InvocationHandler类中添加一个被代理的对象作为其成员变量.并将要调用的方法名作为invoke()的参数传入,便可以实现对被代理对象的的某个特定方法的访问.

注:此过程最难理解的就是代理类的创建过程,通过新建一个byte[]数组,然后将二进制的字节码写入其中,并将其以Class类型返还.人为的制作一个程序中本没有的类.堪称大神级别的操作...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值