2 votes

Sun CodeModel - Comment créer une énumération avec plusieurs paramètres ?

Je souhaite créer une classe d'énumération similaire à l'extrait de code suivant en utilisant le modèle de code de 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;
    }
}

J'ai pu générer le code pour le constructeur, les champs et les méthodes d'obtention de l'énumération. Mais je ne parviens pas à initialiser les constantes de l'énumération avec trois valeurs. La classe JDefinedClass a une méthode enumConstant qui ne prend en paramètre que le nom de la constante de l'énumération. J'ai également lu la documentation de la classe JEnumConstant, mais je n'ai rien trouvé qui permette d'ajouter trois valeurs à la constante enum.

4voto

Jan Galinski Points 2654

Vous pouvez utiliser "JEnumConstant.arg()" en même temps que "Jexpr.lit()".

    JEnumConstant enumMonth = definedClass.enumConstant("MONTH");
    enumMonth.arg(lit("month"));
    enumMonth.arg(lit(true));
    enumMonth.arg(lit(false));

J'ai écrit un exemple de code pour cela, voir l'exemple complet ici : https://github.com/jangalinski/stackoverflow-jangalinski/blob/master/src/test/java/de/github/jangalinski/codemodel/GenerateEnumTest.java

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X