0

我有以下枚举

public enum AppointmentSlotStatusType {

    INACTIVE(0), ACTIVE(1);

    private int value;

    private AppointmentSlotStatusType(int value) {
        this.value = value;
    }

    public int getValue() {
        return value;
    }

    public String getName() {
        return name();
    }
}

例如,如果一个值已知,我如何获取枚举名称1

4

3 回答 3

6

对于这个特定的枚举很容易

String name = TimeUnit.values()[1].name();
于 2013-10-15T15:43:40.807 回答
1

您可以在 中实现一个public static方法enum,该方法将为您提供该 id 的枚举实例:

public static AppointmentSlotStatusType forId(int id) {
    for (AppointmentSlotStatusType type: values()) {
        if (type.value == id) {
            return value;
        }
    }
    return null;
}

可能您还想values()在字段中缓存由返回的数组:

public static final AppointmentSlotStatusType[] VALUES = values();

然后使用VALUES而不是values().


或者您可以使用 aMap代替。

private static final Map<Integer, AppointmentSlotStatusType> map = new HashMap<>();

static {
    for (AppointmentSlotStatusType type: values()) {
        map.put(type.value, type);
    }
}

public static AppointmentSlotStatusType forId(int id) {
    return map.get(id);
}
于 2013-10-15T15:42:59.093 回答
0

Map您可以为 Integer 键维护一个保存名称。

public enum AppointmentSlotStatusType {
    INACTIVE(0), ACTIVE(1);

    private int value;

    private static Map<Integer, AppointmentSlotStatusType> map = new HashMap<Integer, AppointmentSlotStatusType>();

    static {
        for (AppointmentSlotStatusType item : AppointmentSlotStatusType.values()) {
            map.put(item.value, item);
        }
    }

    private AppointmentSlotStatusType(final int value) { this.value = value; }

    public static AppointmentSlotStatusType valueOf(int value) {
        return map.get(value);
    }
}

看看这个答案

于 2013-10-15T15:42:52.350 回答