通过 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