ordinal () будет работать, если числа, которые вы передаете в перечисление, являются индексами, а не каким-либо произвольным кодом, таким как разрешение или число символов в строке.
Я бы расширил перечисление методом accesor для значения, индексом разрешения и статическим методом, который разрешает число в значение Enum. Вот, пожалуйста ...
public enum DataType {
IMAGES(1),
VIDEOS(2);
private int value;
DataType(int i){
this.value=i;
}
static final Map<Integer,DataType> inverseIndex;
static {
inverseIndex = new HashMap<Integer,DataType> ();
for (DataType dt:DataType.values()) {
inverseIndex.put(dt.getValue(), dt);
}
}
public int getValue() {
return value;
}
public static DataType resolve(int number) {
return inverseIndex.get(number);
}
}
Обратите внимание, что это решение не будет работать, если ваша карта Enum-значение не является биективной, поэтому вы можете иметь только отдельные значения для перечислений в вашем enumType.