package com.aflfte.test;
import javassist.CannotCompileException;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtConstructor;
import javassist.CtField;
import javassist.CtMethod;
/**
* 测试javassist生成一个新的类
*
* @author root
*
*/
public class Demo01 {
public static void main(String[] args) throws Exception {
ClassPool pool=ClassPool.getDefault();
//动态生成类
CtClass cc=pool.makeClass("com.aflfte.bean.emp");
//创建属性
CtField f=CtField.make("private int empno;", cc);
CtField f2=CtField.make("private String ename;", cc);
cc.addField(f);
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 ct=new CtConstructor(new CtClass[]{CtClass.intType,pool.get("java.lang.String")}, cc);
ct.setBody("{this.empno=empno; this.ename=ename;}");
cc.addConstructor(ct);
cc.writeFile("/root/mywork/");//将上面构造好的类写入到工作空间
System.out.println("成功生成类!");
}
}
« javassist动态操作类的属性、方法、构造器、注解
|
测试脚本引擎执行javascript代码»
|