java enum getter setter

GAM*_*AMA 4 java setter enums getter-setter

我正在使用Web服务中的数据,将数据存储到数据持有者类中,然后在其他位置获取该数据。

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

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

该枚举在另一个类中使用,如下所示:

public EventStatus getEventStatus() {
    return eventStatus;
}

public void setEventStatus(EventStatus eventStatus) {
    this.eventStatus = eventStatus;
}
Run Code Online (Sandbox Code Playgroud)

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

event.setEventStatus(getAttributeValueInt(linkedEventElement, "status"));
Run Code Online (Sandbox Code Playgroud)

相当于

event.setEventStatus(1);
Run Code Online (Sandbox Code Playgroud)

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

我可以做到这一点的一种方法是这样的:

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

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

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

谁能指导我前进?

Aka*_*vda 5

您可以这样创建枚举

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

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

event.setEventStatus(EventStatus.getEventStatusById(getAttributeValueInt(linkedEventElement, "status")));
Run Code Online (Sandbox Code Playgroud)

我认为它很有用。