8.2.4 总结
Java动态代理只能代理接口。感兴趣的读者可以借助如下窍门反编译动态生成代理类的二进制代码,借以了解动态生成的代理类。
小窍门:如果读者使用Sun公司JDK做开发,则可以使用sun.misc.ProxyGenerator.generateProxyClass(String s, Class aclass[])方法生成代理类的二进制class代码,然后反编译这个class文件一窥究竟。
其实创建动态代理方式不只有JDK提供的这一种方式,很多动态字节码工具都可以生成动态代理。例如,使用CGLib就可以,它不仅可以动态代理接口,还可以动态代理具体的类。由于在运行时创建代理类非常灵活,动态代理在事务管理,AOP(Aspect-Oriented Programming,切面编程)实现等方面发挥了出色的作用。