在java的加载过程一般都是要预先定义java类,然后通过经过加载->连接->初始化三步。连接过程又可分为三步:验证->准备->解析。初始化的类是不允许修改。但是在日常的工作中有时候需要动态生成类,那第这种情况怎么办呢?
可以这么处理:
1、先定义一个空的类,仅作为动态生类的父类标识
public abstract class DynamicEntity { }
2、动态生成
/*** 动态生成类工具*/ public class ClassGenerator {private static final String BASE_CLASS = "com.dynamic.DynamicEntity";public static Class<? extends DynamicEntity> generateClass(String className, List<Demo> fields) throws Exception{ClassPool pool = ClassPool.getDefault();CtClass ctClass = pool.makeClass(className);// 继承DynamicEntityctClass.setSuperclass(pool.get(BASE_CLASS));// 动态添加字段和getter/setterfor (SelectColumnsModal field : fields){String fieldName = field.getEngName().replaceAll("\\s", "");// 指定数据类型String type = "java.lang.String"