javassist使用
/**
* 字节码技术
* 创建User class文件
*/
public class CreateUserClass
{
public static void main(String[] args) throws Exception
{
ClassPool pool = ClassPool.getDefault ();
//创建class文件 指定包名
CtClass userClass = pool.makeClass ("cn.edu.hbpu.javassit.User");
//创建成员变量 id
CtField idField = CtField.make ("private Integer id;",userClass);
//创建成员变量 name
CtField nameField = CtField.make ("private String name;",userClass);
//为userClass添加属性
userClass.addField (idField);
userClass.addField (nameField);
/**
* 创建方法
*/
CtMethod getMethod = CtMethod.make ("public Integer getId() {return id;}", userClass);
CtMethod setMethod =CtMethod.make ("public void setId(Integer id) { this.id = id; }",userClass);
//添加方法
userClass.addMethod (getMethod);
userClass.addMethod (setMethod);
// 添加构造器
CtConstructor ctConstructor = new CtConstructor(new CtClass[] { CtClass.intType, pool.get("java.lang.String") },
userClass);
// 为构造器 设置Body
ctConstructor.setBody(" {this.id = id;this.name = name;}");
userClass.addConstructor(ctConstructor);
//写入到
userClass.writeFile("E:/upload");
}
}
效果: