您当前的位置:移动互联培训 > Java培训 > JAVA开发 >

深入理解java中的动态代理

来源:互联网 2017-09-05

代理模式是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个真实对象的访问。今天华清Java学院小编就和大家一起来深入理解Java中的动态代理

1、java中的动态代理要实现一个InvocationHandler接口并实现其中的invoke方法代码如下:

深入理解java中的动态代理1

2. 在写一个main方法看如何调用:

深入理解java中的动态代理2

3. 现在我们来看为什么personProx.getClass().getName()得到的名字会是$Proxy0

深入理解java中的动态代理3

 

4. 通过反编译工具打开$Proxy0.class文件(为了简介我把其中一些代码删掉了)

深入理解java中的动态代理4

 

通过这样分析我们就明白了原来是jdk动态为我们生成了一个$Proxy0类,并在该类中通过反射得到了Person接口中的方法,然后把我们实现了InvocationHandler接口的类赋值给了Proxy类中的h,因此当调用personProx.say()的时候就调到自己写的DynamicProx类中了

400-611-6270

Copyright ©2004-2018 华清远见教育科技集团 版权所有
京ICP备16055225号,京公海网安备11010802025203号