Javassist是一个Java字节码操作库,它提供了一种以程序方式编辑类文件的方法。在Java程序运行时,Javassist可以动态修改字节码,从而实现一些非常有用的功能,比如动态生成类、修改类、创建代理对象等等。下面是一个使用Javassist动态修改类的示例代码:
import javassist.*;
public class JavassistDemo {
public static void main(String[] args) throws Exception {
// 创建ClassPool对象
ClassPool cp = ClassPool.getDefault();
// 创建一个新的类
CtClass cc = cp.makeClass("com.example.MyClass");
// 添加一个新的方法
CtMethod m = CtNewMethod.make(
"public void hello(String name) { System.out.println(\"Hello, \" + name + \"!\"); }", cc);
cc.addMethod(m);
// 保存类文件
cc.writeFile();
// 加载并使用新的类
Class<?> c = cc.toClass();
Object obj = c.newInstance();
c.getMethod("hello", String.class).invoke(obj, "World");
}
}
这个示例代码创建了一个名为com.exa