测试使用javassist生成一个新的类

/**
* @author leo
* @version 创建时间:
* 说明:测试使用javassist生成一个新的类
* 使用此类库需要导入javassist.jar包
*/
public class Demo1 {
    public static void main(String[] args) throws CannotCompileException, NotFoundException, IOException {
        //创建类
        ClassPool pool = ClassPool.getDefault();
        CtClass cc = pool.makeClass("cn.sxt.javassist.bean.Emp");

        //创建属性
        CtField f1 = CtField.make("private int empno;", cc);
        CtField f2 = CtField.make("private int ename;", cc);
        cc.addField(f1);
        cc.addField(f2);

        //创建方法
        CtMethod m1 = CtMethod.make("public int getEmpno(){return empno;}", cc);
        CtMethod m2 = CtMethod.make("public void setEmpno(int empno){this.empno = empno;}", cc);
        cc.addMethod(m1);
        cc.addMethod(m2);

        //添加构造器,以下为两种添加参数的方式
        CtConstructor constructor = new CtConstructor(new CtClass[] { CtClass.intType, pool.get("java.lang.String") },
                cc);
        constructor.setBody("{this.empno = empno; this.ename = ename;}");
        cc.addConstructor(constructor);

        cc.writeFile("E:/test/path/myjava");//将上面构造好的类写入到该路径里面
        System.out.println("生成类成功");//生成class文件Emp.class

    }
}

你可能感兴趣的:(javassist类库基本操作)