Тесты Пообщаться с GPT Протестировать код
Программирование Аналитика Дизайн Маркетинг Управление проектами
29 Ноя 2023
2 мин
552

Конвертация из порядкового номера enum в тип enum в Java

Пройдите тест, узнайте какой профессии подходите

Проблема, с которой сталкиваются разработчики, заключается в необходимости конвертировать порядковый номер перечисления (enum) обратно в его тип после

Проблема, с которой сталкиваются разработчики, заключается в необходимости конвертировать порядковый номер перечисления (enum) обратно в его тип после передачи его через URL или любой другой канал, который требует сериализации в примитивный тип. Возьмем для примера следующий enum:

public enum ReportTypeEnum {
    TYPE1,
    TYPE2,
    TYPE3
}

Если нужно передать значение этого перечисления через URL, можно использовать метод ordinal(), который вернет порядковый номер элемента в перечислении. Например, ReportTypeEnum.TYPE2.ordinal() вернет 1.

После получения этого порядкового номера на другой стороне, возникает вопрос: как конвертировать его обратно в ReportTypeEnum?

Решение

В Java есть простое решение для этого. Каждый enum в Java имеет статический метод values(), который возвращает массив, содержащий все значения данного типа enum в том порядке, в котором они были объявлены.

Таким образом, чтобы получить значение enum по его порядковому номеру, достаточно вызвать этот метод и использовать порядковый номер как индекс в этом массиве.

int ordinal = 1; // полученный порядковый номер
ReportTypeEnum type = ReportTypeEnum.values()[ordinal];

В этом примере type будет равно ReportTypeEnum.TYPE2, так как TYPE2 имеет порядковый номер 1 в ReportTypeEnum.

Такой подход прост и легко реализуется. Однако, стоит помнить, что он работает корректно только в случае, если порядок значений в перечислении не меняется. Если вдруг добавить, удалить или переупорядочить значения в enum, то порядковые номера могут измениться, и код, зависящий от этого, может начать работать некорректно.

Добавить комментарий