javassit是一个处理java字节码的类库;CtClass是一个class文件的抽象表示。
1.动态生成.class文件
public static void main(String[] args) {
//默认的类搜索路径
ClassPool classPool = ClassPool.getDefault();
//创建一个ctClass对象
CtClass ctClass = classPool.makeClass("com.lwj.mom.base.javassist.Student");
try {
//添加age属性
ctClass.addField(CtField.make("private int age;",ctClass));
//添加setAge方法
ctClass.addMethod(CtMethod.make("public void setAge(int age){this.age = age;}",ctClass));
//添加getAge方法
ctClass.addMethod(CtMethod.make("public int getAge(){return this.age;}", ctClass));
//将ctClass转换成字节码并写入文件
byte[] byteArray = ctClass.toBytecode();
FileOutputStream output = new FileOutputStream("D:\\Student.class");
output.write(byteArray);
output.close();
System.o