一、背景
上一篇文章 Java代理 讲了动态代理,JDK的Proxy动态代理是用反射机制来实现,而CGLIB是通过ASM操作字节码来实现,用ASM操作字节码比较复杂,需要熟悉Class文件结构,用Javassist也可以实现修改类对象,可以在一个已经编译好的类中添加新的方法或者修改已有的方法而不需要你对字节码文件有深入的了解,这个功能还是很强大,不仅服务端在做拦截时会用到,Android做热更新也可以用这个,唉,以前做了2年的Andoid现在差不多忘光了。
二、Javassist核心类介绍
CtClass:表示Class文件,一个CtClass对象可以处理一个Class文件,有addField、addMethod、addConstructor、writeFile(根据CtClass生成.class文件)、to