在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"