让我们考虑一下,我有一个如下文件:
@CreateFieldClass
public class Queue {
private String queueId;
private int order;
private boolean isActive;
/* Getters and Setters */
}
我想要的是,如果有@CreateFieldClass注释,我想生成一个新的java文件,在同一个包中看起来像这样
public class QueueFields {
public static final Field<Queue, String> QUEUE_ID = new Field<>(Queue.class, "queueId", DataType.STRING);
public static final Field<Queue, Integer> ORDER = new Field<>(Queue.class,"order", DataType.NUMBER);
public static final Field<Queue, Boolean> IS_ACTIVE = new Field<>(Queue.class,"isActive", DataType.Boolean);
}
我有一个Java类型映射到上面提到的“DataType” . 我知道ASM是一个需要考虑的选项,但有没有更好的建议,甚至有些ASM教程/示例可以帮助我 .
1 回答
要检查带注释的类,可以使用反射 . 请注意,使用泛型的任何字段都会因擦除而丢失通用参数类型(如果需要解决这些问题,则需要解析源代码并解析分析树) . 要生成结果类,可以执行基本的字符串连接 . 如果你想要一个更结构化的方法来生成代码,我喜欢codemodel库 .