代理之JDK动态代理原理(2)2018-07-28

    上一篇代理之JDK动态代理原理(1)我们明白了代理对象是怎么生成的,那么InvocationHandler的invoke方法是由谁来调用的???

    为了搞明白InvocationHandler的invoke方法是由谁来调用的我们先要了解下代理生成的对象是什么样的,那么我们就代理之JDK动态代理的案例基础下来获取代理对象的java文件。

首先:获取生成代理的二进制文件(class 文件) 。代码如下:

然后:利用反编译工具将class文件反编译成java文件,获取的Java文件如下:

现在:我们观察代理生成的对象代码可以看出:

1、代理对象的构造方法需要一个InvocationHandler对象参数,在调用构造方法是将参数赋值给其父类Proxy中的InvocationHandler  h属性。

2、在调用getName时将调用h.invoke((Object proxy, Method method, Object[] args))方法,其中h属于InvocationHandler类型

结束语:至此我们之前遗留的问题,已经明白到底是什么回事了。



“知其然,知其所以然”


你可能感兴趣的:(代理之JDK动态代理原理(2)2018-07-28)