Convertir de enumeración ordinal a tipo de enumeración
Tengo el tipo de enumeración ReportTypeEnum
que se pasa entre métodos en todas mis clases, pero luego necesito pasarlo en la URL, así que uso el método ordinal para obtener el valor int. Después de obtenerlo en mi otra página JSP, necesito convertirlo a an ReportTypeEnum
para poder continuar pasándolo.
¿ Cómo puedo convertir ordinales a ReportTypeEnum
?
Utilizando Java 6 SE.
Para convertir un ordinal en su representación enumerativa, es posible que desees hacer esto:
ReportTypeEnum value = ReportTypeEnum.values()[ordinal];
Tenga en cuenta los límites de la matriz.
Tenga en cuenta que cada llamada a values()
devuelve una matriz recién clonada que podría afectar negativamente al rendimiento. Es posible que desee almacenar en caché la matriz si se va a llamar con frecuencia.
Ejemplo de código sobre cómo almacenar en cachévalues()
.
Esta respuesta fue editada para incluir los comentarios proporcionados dentro de los comentarios.
Es casi seguro que se trata de una mala idea . Ciertamente, si el ordinal persiste de facto (por ejemplo, porque alguien ha marcado la URL como favorita), significa que siempre debe conservar el enum
orden en el futuro, lo que puede no ser obvio para los encargados del código en el futuro.
¿ Por qué no codificar el enum
uso myEnumValue.name()
(y decodificar mediante ReportTypeEnum.valueOf(s)
) en su lugar?