Вот решение, которое я планирую использовать.Это не только работает с непоследовательными целыми числами, но также должно работать с любым другим типом данных, который вы можете использовать в качестве основного идентификатора для значений перечисления.
public Enum MyEnum {
THIS(5),
THAT(16),
THE_OTHER(35);
private int id; // Could be other data type besides int
private MyEnum(int id) {
this.id = id;
}
public int getId() {
return this.id;
}
public static Map<Integer, MyEnum> buildMap() {
Map<Integer, MyEnum> map = new HashMap<Integer, MyEnum>();
MyEnum[] values = MyEnum.values();
for (MyEnum value : values) {
map.put(value.getId(), value);
}
return map;
}
}
Мне нужно только преобразовать идентификаторы вперечисляет в определенное время (при загрузке данных из файла), поэтому у меня нет причин постоянно хранить карту в памяти.Если вам все время нужна карта, вы всегда можете кэшировать ее как статический член вашего класса Enum.