我正在使用来自网络服务的数据,将该数据存储到数据持有者类中,然后在其他地方获取该数据。
对于特定字段,最合适的数据类型是枚举,因此我创建了以下枚举:
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/