Convertir de enumeración ordinal a tipo de enumeración

Resuelto Lennie asked hace 15 años • 15 respuestas

Tengo el tipo de enumeración ReportTypeEnumque 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 ReportTypeEnumpara poder continuar pasándolo.

¿ Cómo puedo convertir ordinales a ReportTypeEnum?

Utilizando Java 6 SE.

Lennie avatar Mar 04 '09 16:03 Lennie
Aceptado

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.

Joachim Sauer avatar Mar 04 '2009 09:03 Joachim Sauer

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 enumorden en el futuro, lo que puede no ser obvio para los encargados del código en el futuro.

¿ Por qué no codificar el enumuso myEnumValue.name()(y decodificar mediante ReportTypeEnum.valueOf(s)) en su lugar?

oxbow_lakes avatar Mar 04 '2009 09:03 oxbow_lakes