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()ます。


または、代わりに a を使用できますMap

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整数キーの保持名を維持できます。

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 に答える