2

我想使用 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 类的文档,但找不到任何可以向枚举常量添加三个值的内容。

4

1 回答 1

4

您可以将“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

于 2013-07-28T20:01:20.007 回答