我想使用Sun的代码模型创建一个类似于以下代码片段的枚举类
public enum REPORT_COLUMNS {
MONTH("month", true, false),
DAY("day", false, true);
private final String column;
private final boolean filterable;
private final boolean includeInHavingClause;
private REPORT_COLUMNS(String column, boolean filterable, boolean includeInHavingClause) {
this.column = column;
this.filterable = filterable;
this.includeInHavingClause = includeInHavingClause;
}
public String getColumn() {
return column;
}
public boolean isFilterable() {
return filterable;
}
public boolean includeInHavingClause() {
return includeInHavingClause;
}
}
我能够为枚举的构造函数,字段和getter方法生成代码。但是,我无法使用三个值初始化枚举常量。 JDefinedClass有一个方法enumConstant,它只接受枚举常量的名称作为参数。我已经阅读了JEnumConstant类的文档,但找不到任何可以为枚举常量添加三个值的内容。
答案 0 :(得分:3)
您可以将“JEnumConstant.arg()”与“Jexpr.lit()”一起使用。
JEnumConstant enumMonth = definedClass.enumConstant("MONTH");
enumMonth.arg(lit("month"));
enumMonth.arg(lit(true));
enumMonth.arg(lit(false));
我为此编写了一些示例代码,请查看完整示例:https://github.com/jangalinski/stackoverflow-jangalinski/blob/master/src/test/java/de/github/jangalinski/codemodel/GenerateEnumTest.java