我不知道如何在java中有效获取我的枚举类型的名称 我有:
public enum EventType{
event_one(1, "ONE"), event_two(2, "TWO");.........
private final int value;
private final String eventName;
private EventType(int EventType, String name) {
this.value = EventType;
this.eventName = name;
}
public String getEventName() {
return eventName;
}
public int getValue() {
return this.value;
}
}
现在,我希望通过ID获取eventName
。enum.get(1); //ONE
最好的方法是什么?对于循环?或者还有其他方法吗?
答案 0 :(得分:1)
你真的不需要" id"。请改用enum.ordinal()
。然后你可以做这样的事情:
public String getEventName(int id) { return EventType.values[id].getName(); }
答案 1 :(得分:0)
如果您的值在order,则可以使用EventType.values()[position-1].getEventName()
。第二种方法是使用Map并通过代码获取Enum并检索事件Name。以下是所提到的两种方法的示例。
import java.util.HashMap;
import java.util.Map;
enum EventType {
event_one(1, "ONE"), event_two(2, "TWO");
private final int value;
private final String eventName;
private EventType(int EventType, String name) {
this.value = EventType;
this.eventName = name;
}
public String getEventName() {
return eventName;
}
public int getValue() {
return this.value;
}
static Map<Integer, EventType> map = new HashMap<>();
static {
for (EventType catalog : EventType.values()) {
map.put(catalog.value, catalog);
}
}
public static EventType getByCode(int code) {
return map.get(code);
}
public static EventType getByPosition(int positionCode) {
return EventType.values()[positionCode - 1];
}
public static void main(String[] args) {
String name = EventType.getByCode(1).getEventName();
System.out.println(EventType.getByPosition(1).getEventName());
System.out.println(name);
}
}
输出
ONE
ONE