通过 id [JAVA] 获取枚举
Get enum by id [JAVA]
我不知道如何在 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
什么是最好的方法?对于循环?或者还有其他方法吗?
你真的不需要"id"。请改用 enum.ordinal()
。然后你可以做这样的事情:
public String getEventName(int id) { return EventType.values[id].getName(); }
如果您的值在 order 中,您可以使用 EventType.values()[position-1].getEventName()
。第二种方法是使用 Map 并通过代码获取 Enum 并检索事件名称。下面是所提到的 2 种方法的示例。
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
我不知道如何在 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
什么是最好的方法?对于循环?或者还有其他方法吗?
你真的不需要"id"。请改用 enum.ordinal()
。然后你可以做这样的事情:
public String getEventName(int id) { return EventType.values[id].getName(); }
如果您的值在 order 中,您可以使用 EventType.values()[position-1].getEventName()
。第二种方法是使用 Map 并通过代码获取 Enum 并检索事件名称。下面是所提到的 2 种方法的示例。
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