深入理解java中的动态代理

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

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

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

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

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