java 枚举 getter setter

标签 java enums setter getter-setter

我正在使用来自网络服务的数据,将该数据存储到数据持有者类中,然后在其他地方获取该数据。

对于特定字段,最合适的数据类型是枚举,因此我创建了以下枚举:

public enum EventStatus {
    PENDING(1), OPEN(2), DISPATCHED(3), APPENDED(4), CLOSED(5), REQUESTED_TO_CLOSE(
            6), ACTION_REQUESTED_FROM_POLICE_STATION(7), ACTION_REQUESTED_FROMD_ISPATCHER(
            8), ACTION_REQUESTED_FROM_SUPERVISOR(9);
    private int value;

    private EventStatus(int value) {
        this.value = value;
    }

    public int getValue() {
        return value;
    }
    //Just for testing from some SO answers, but no use
    public void setValue(int value) {
        this.value = value;
    }
}

此枚举在另一个类中使用如下:

public EventStatus getEventStatus() {
    return eventStatus;
}

public void setEventStatus(EventStatus eventStatus) {
    this.eventStatus = eventStatus;
}

现在,当我尝试设置如下值时:

event.setEventStatus(getAttributeValueInt(linkedEventElement, "status"));

相当于

event.setEventStatus(1);

我收到编译错误,方法不适用于参数(int)

我可以做到这一点的一种方法是通过这样的事情:

switch(getAttributeValueInt(linkedEventElement, "status")){
   case 1:eventLinkedEvent.setEventStatus(EventStatus.PENDING); 
      //and so on...
}

但这破坏了枚举的唯一目的。

还有如何获取整数形式的事件状态值?

任何人都可以指导我如何继续吗?

最佳答案

你可以像这样创建枚举

public enum EventStatus {
    PENDING(1), OPEN(2), DISPATCHED(3), APPENDED(4), CLOSED(5), REQUESTED_TO_CLOSE(
            6), ACTION_REQUESTED_FROM_POLICE_STATION(7), ACTION_REQUESTED_FROMD_ISPATCHER(
            8), ACTION_REQUESTED_FROM_SUPERVISOR(9);
    private int value;

    private EventStatus(int value) {
        this.value = value;
    }

    public int getValue() {
        return value;
    }
    //Just for testing from some SO answers, but no use
    public void setValue(int value) {
        this.value = value;
    }

    public static EventStatus getEventStatusById(int id) {

        EventStatus event = null;

        switch (id) {
        case 1:
            event = PENDING;
            break;
        case 2:
            event = OPEN;
            break;
        case 3:
            event = DISPATCHED; 
            break;
        case 4:
            event = APPENDED;
            break;
        case 5:
            event = CLOSED;
            break;
        case 6:
            event = REQUESTED_TO_CLOSE;
            break;
        case 7:
            event = ACTION_REQUESTED_FROM_POLICE_STATION;
            break;
        case 8:
            event = ACTION_REQUESTED_FROMD_ISPATCHER;
            break;
        case 9:
            event = ACTION_REQUESTED_FROM_SUPERVISOR;
            break;

        default:
            break;
        }
        return event;
    }
}

在你可以尝试下面的行来设置 EventStatus 之后

event.setEventStatus(EventStatus.getEventStatusById(getAttributeValueInt(linkedEventElement, "status")));

我觉得有用..

关于java 枚举 getter setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29430182/

相关文章:

java - 从多个 portlet 访问 Util jar 中的 FacesContext

java - 无法将 jar 复制到绝对路径

java - 如何在HttpsURLConnection中正确导入认证?

python - 枚举 KeyError 函数

linux - 枚举类型声明的 C++11 编译错误如预期的那样在数字常量之前

java - 当访问默认情况时如何重新启动此 switch 语句?

objective-c - 在 Swift 项目中使用 Objective-C 中声明的 NS_Option 枚举

java - 即使我知道我永远不会需要它,在我的对象中包含一个 setter 是一个好习惯吗?

java - 如何使用反射定义动态的setter和getter?

database - 如何使用具有起始值的自动生成功能生成 hibernate ID