示例如下代码:
package com.buaa.javassist;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtConstructor;
import javassist.CtField;
import javassist.CtMethod;
public class Demo03 {
public static void main(String[] args) throws Exception {
ClassPool pool = ClassPool.getDefault();
//创建一个新类
CtClass cc = pool.makeClass("com.buaa.javassist.Person");
//添加两个属性
CtField cf1 = CtField.make("private String name;", cc);
CtField cf2 = CtField.make("private int age;", cc);
cc.addField(cf1);
cc.addField(cf2);
//创建一个方法
CtMethod cm = CtMethod.make("public void fun(){System.out.println(\"Hello Man .\");}", cc);
cc.addMethod(cm);
//创建一个构造器
CtConstructor con = new CtConstructor(new CtClass[]{pool.get("java.lang.String"),CtClass.intType},cc);
con.setBody("{this.name = name;this.age = age;}");
cc.addConstructor(con);
//写入到一个文件中
cc.writeFile("e:/zzzjava");
System.out.println("类创建完成!");
}
}
注意:生成的类可通过反编译工具(如XJad)打开查看。