一、前言
Javassist 是一个开源,用于分析、编辑和创建Java字节码的类库,由东京工业大学数学和计算机科学系的 Shigeru Chiba (千叶滋)所创建。目前已加入了开放源代码JBoss 应用服务器项目,通过使用Javassist对字节码操作为JBoss实现动态"AOP"框架。
通过使用Javassist可以使Java程序在运行时定义一个新的类,并且在JVM加载类文件时修改它
Javassist提供两个级别的API:源码级别和字节码级别。
如果使用源码级的API,开发人员可以在不知道Java字节码的情况下编辑Java类文件,就像我们编写Java源代码一样方便。如果使用字节码级别的API,那么需要详细了解Java字节码和类文件格式,因为字节码级别的API允许我们对类文件进行任意修改。
官网地址:Javassist官方教程
二、Javassist 中几个重要的类
在使用javassist进行编码之前,有必要对javassist理论知识做一个全面的了解和学习;
Javassist 中最为重要的是 ClassPool,CtClass ,CtMethod 以及 CtField 这几个类;
- ClassPool:基于Hasht