Поскольку вы должны использовать эту таблицу и, следовательно, не можете использовать EnumMap
, я лично считаю, что лучшим решением будет придерживаться того, что у вас есть.В перечислении порядковые значения элементов не должны иметь никакого внутреннего значения, в то время как в вашем случае они имеют, поскольку они используются в качестве индексов в таблице.
Проблема в том, что вы нене используют перечисления, это то, что вам нужны магические значения для извлечения данных столбца из таблицы.В этом случае использование целочисленных констант является правильным инструментом для работы, если только вы не можете решить основную проблему этой таблицы.
Теперь вы можете решить ее, обернув таблицу в свой собственный класс, который обращается к ней,и использовать перечисления в и из этого класса.Но это вводит больше кода, еще один уровень косвенности и фактически не решает никаких проблем для вас, за исключением того, что enum немного легче поддерживать, чем список значений int (значительно компенсируется необходимостью поддерживать оболочку, которую вы сейчас написали).
Вы могли бы рассмотреть эту работу, если вы пишете общедоступный API, который будут использовать другие люди, поскольку это позволит избежать зависимости их от некоторых магических значений, которые могут со временем меняться (тесная связь, которая может сломать вещи).Если да, то скорее всего вам подходит оболочка, которая использует EnumMap
внутри.
В противном случае оставьте все как есть.