java 动态代理 结合demo直通车

来源:互联网 发布:阿里云上传速度慢 编辑:程序博客网 时间:2024/05/16 17:57

1. 快速理解 动态代理 demo

转自: http://www.iteye.com/topic/683613

 

2. 机制分析 + Proxy0 类源代码

Proxy.(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h)做了以下几件事.
(1)根据参数loader和interfaces调用方法 getProxyClass(loader, interfaces)创建代理类$Proxy.
$Proxy0类实现了interfaces的接口,并继承了Proxy类.
(2)实例化$Proxy0并在构造方法中把BusinessHandler传过去,接着$Proxy0调用父类Proxy的构造器,为h赋值,如下:
class Proxy{
   InvocationHandler h=null;
   protected Proxy(InvocationHandler h) {
    this.h = h;
   }
   ...
}


下面是本例的$Proxy0类的源码(好不容易才把它提出来):

 

接着把得到的$Proxy0实例强制转换成Manager.
当执行managerProxy.modify()方法时,就调用了$Proxy0类中的modify()方法.
在modify方法中,调用父类Proxy中的h的invoke()方法.
即InvocationHandler.invoke();

 

原创粉丝点击