JDK动态代理实现原理

注:内容来源于上课笔记,如有侵权请联系删除!

JDK动态代理实现原理

在JDK中提供了已个Proxy的工具类,专门用于生成代理对象。但是有一个前提是要求被代理的对象必须要有实现的接口。而核心创建代理对象的方法是newProxyInstance。

newProxyInstance方法工作流程

这个方法中有一行核心代码:

Class<?> cl = getProxyClass0(loader, intfs);

这行代码作用是查找或生成指定的代理类,返回的是代理类的Class对象

image-20190917101041419

在这个方法中会创建一个ProxyClassFactory,这个工厂负责创建代理的Class

image-20190917103441708

在ProxyClassFactory类中使用了ProxyGenerater这个类来生成具体的代理类的字节码,返回的是一个字节数组,然后通过defineClass0这个方法将直接数组加载到JVM中并创建一个Class对象返回,这个Class对象就是代理对象的Class。

image-20190917103635659

defineClass0方法是一个本地方法,由低层的jvm使用C++去实现,目的就是根据传入的字节码信息将其装载到jvm并创建成Class对象返回。

image-20190917104106915

注:内容来源于上课笔记,如有侵权请联系删除!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值