Sun CodeModel - 如何使用多个参数创建枚举

时间:2013-07-25 07:55:00

标签: java sun-codemodel

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

1 个答案:

答案 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