Вам нужно написать метод, возможно, в RPCPacketDataType:
public static RPCPacketDataType valueOf(int value) {
...
}
Затем вызвать его из вашего оператора case.Учитывая, что значение может быть только целым числом, вы почти наверняка должны использовать Integer.parseInt
вместо Long.parseLong
.
Как реализовать метод valueOf
, зависит только от вас - вы могли бы перебирает EnumSet
всех значений, пытаясь найти совпадение, или создает HashMap
от Integer до RPCPacketDataType
или, возможно, просто массив (с проверкой).Это будет зависеть от того, что находится в вашем перечислении, и сколько значений нужно просмотреть.
Обратите внимание, что вы должны также подумать, что делать, если valueOf
передано значение, которое не соответствует никакому перечислениюзначение - один из вариантов - вернуть null
(и, вероятно, проверить это явно в вызывающем коде);другое - бросить исключение.