通过int值设置枚举

暗淡

我有一个枚举int值,用于存储在数据库中:

public enum DayType {
    REGULAR(1), VACATION(2), SICK(3);

    private final int value;
    private DayType(int value)
    {
        this.value = value;
    }

    public int getValue() {
        return value;
    }
}

这是此枚举的二传手:

private DayType dayType

public void setDayType(int dayType) {

     switch(dayType) {
        case 1:
            this.dayType = DayType.REGULAR;
            break;

        case 2:
            this.dayType = DayType.VACATION;
            break;

        case 3:
            this.dayType = DayType.SICK;
            break;

        default :
            this.dayType = DayType.REGULAR;
            break;
    }

一切正常。但是,如果int每个枚举值都有一个值,则必须有一种更“漂亮”的方式来编写setter 不使用开关盒...

安德鲁蒙尼

在这种特殊情况下,您无需为每个元素明确指定int值,而只需将其常量视为数组即可:

private DayType dayType = DayType.REGULAR;
public void setDayType(int dayType) {
   if (dayType <= DayType.values().length) this.dayType = DayType.values()[dayType - 1];
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章