Java设置了枚举值

时间:2015-08-06 16:38:34

标签: java

我有一个java枚举

public enum Month {
        JANUARY("01. January")
        ,FEBRUARY("02. February")
        , MARCH("03. March")
        , APRIL("04. April")
        , MAY("05. May")
        , JUNE("06. June")
        , JULY("07. July")
        , AUGUST("08. August")
        , SEPTEMBER("09. September")
        , OCTOBER("10. October")
        , NOVEMBER("11. November")
        , DECEMBER("12. December");

        private final String displayName;

        Month(final String display)
        {
            this.displayName = display;
        }

        @Override public String toString()
        {
            return this.displayName;
        }

    };

我还有一个DTO对象

public class SampleDTO {

    private int variable1;

    private Set<String> monthName;

public int getVariable1() {
        return variable1;
    }

    public void setVariable1(int variable1) {
        this.variable1 = variable1;
    }

    public Set<String> getMonthName() {
        return monthName;
    }

    public void setMonthName(Set<String> monthName) {
        this.monthName = monthName;
    }

}

最后我有一个带有输入参数的方法作为SampleDTO,有没有办法可以强制将字符串添加到monthName时,它总是来自枚举的有效值。例如,添加&#34; dfkjahdkjfadf&#34;不应该允许到集合

2 个答案:

答案 0 :(得分:2)

Set<String>更改为Set<Month>,以便它只能包含Month枚举实例。确保它是合法月份似乎是合同的一部分,因此您必须在SampleDTO内强制执行。

答案 1 :(得分:1)

您可能使用Set<Month>代替Set<String>,例如:

public class SampleDTO {
.    ...
     private Set<Month> month;
     ...
}